惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
GbyAI
GbyAI
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
小众软件
小众软件
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
F
Fortinet All Blogs
博客园 - 【当耐特】
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy
O
OpenAI News
V
V2EX
博客园 - 三生石上(FineUI控件)
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Stack Overflow Blog
Stack Overflow Blog
P
Privacy International News Feed
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Jina AI
Jina AI
H
Help Net Security
L
LINUX DO - 最新话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tenable Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cisco Talos Blog
Cisco Talos Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
酷 壳 – CoolShell
酷 壳 – CoolShell
Hacker News: Ask HN
Hacker News: Ask HN
S
Security @ Cisco Blogs
S
Securelist
T
The Blog of Author Tim Ferriss
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
雷峰网
雷峰网
V2EX - 技术
V2EX - 技术

博客园 - tsembrace

Pandas数据分析教程,由浅入深讲解(五)Pandas IO操作 Pandas数据分析教程,由浅入深讲解(四) Pandas数据分析教程,由浅入深讲解(三) Pandas数据分析教程,由浅入深讲解(二) Pandas数据分析教程,由浅入深讲解(一) B站黑马Python+AI零基础入门(二)AI应用-实战 B站黑马Python+AI零基础入门(一)AI应用-基础 B站清华128小时Python高级教程一(C3深入类和对象) B站清华128小时Python高级教程一(C1、C2) B站python入门学习---第二阶段第二章数据库、SQL和MySQL B站python入门学习---第二阶段第一章类和对象 B站python入门学习---第一阶段第十章 数据可视化 B站python入门学习---第一阶段第八~九章 文件操作、异常、模块与包 B站python入门学习---第一阶段前七章回顾复习(二) B站python入门学习---第一阶段前七章回顾复习(一) Python入门学习(十)第十四章其他 Python入门学习(九)Python的高级语法与用法(四)装饰器 Python入门学习(九)Python的高级语法与用法(三)函数式编程 Python入门学习(九)Python的高级语法与用法(二)闭包 Python入门学习(九)Python的高级语法与用法(一)枚举 Python入门学习(八)JSON、反序列化、序列化 Python入门学习(七)高级部分:正则表达式(二) Python入门学习(七)高级部分:正则表达式 Python入门学习(六)高级部分:面向对象 Python入门学习(四)流程控制 包与模块
Python入门学习(五)函数
tsembrace · 2025-06-04 · via 博客园 - tsembrace

一、函数的特性和定义

"""
函数特性:
1、功能性
2、隐藏细节,方便调用
3、避免编写重复代码(可复用性)
"""
a = 1.12386
print(round(a,2))

#函数的定义
#1、可以无参数
#2、可以通过return来返回一个值,如没设置return则默认返回值为None
def funcname(parameter_list):
    pass

#示例1,实现两个数字的相加
def add(a, b):
    return a+b

print(add(18,92))

#示例2,重写一个print函数
def myprint(code):
    print(code)

myprint("hello world!")

 二、多个返回值的函数

def damage(skill1, skill2):
    d1 = skill1 * 3
    d2 = skill2 * 2 + 10
    return d1, d2   #多个返回值实际返回的是一个元组,但不需要强制加括号

damages = damage(1, 2)
print(type(damages), damages)
damages1, damages2 = damage(2, 3)  #一般可以这样获取,这种方式也称为序列解包
print(damages1, damages2)

#也可以如下,但不推荐——并不知道函数返回值的特定意义
print(damage(10, 12)[0], damage(100, 180)[1])
#序列解包
# a, b, c = 1, 2, 3  
#也可以如下方式
d = 1, 2, 3
a, b, c = d
print(type(d), a, b, c)

#如果序列解包的数量不匹配,系统会报错
#e, f = d

三、必须参数和关键字参数

#必须参数:是指在调用时候必须要传参的

def add(x, y):    #这里的x,y就是函数代码内必须要用的参数,即称为必须参数
    result = x + y
    return result

#关键字参数
#可以在调用的时候不依据函数定义时的顺序,可以通过形参名赋值的形式明确指出
#顺序也可以与函数定义时不同
#关键字参数主要是增加代码可读性
c = add(y = 3, x = 2)    #用形参名明确赋值,顺序与定义时不一样,方便阅读和理解
print(c)

 四、默认参数

#三、默认参数
#函数调用时部分参数可在定义时设置默认值,调用时实参可以不传递此参数
#当该形参的实参不是默认值时,则调用时必须传参设置
#函数定义时,默认参数必须放在参数列表最后
#多个默认参数时传某一个或某几个参数时,需要使用关键字参数
def print_student_diles(name, gender="", age=18, college="人民路小学"):
    print("我叫" + name)
    print("我是" + gender + "")
    print("我今年" + str(age) + "")
    print("我在" + college + "上学")

print_student_diles("鸡小萌", "", 18, "人民路小学")
print_student_diles("郎小华")
print_student_diles("马大哈", "", 18, "梨花小学")
print_student_diles("李乐",age = 20)

五、可变参数和关键字可变参数

#四、可变参数
#可变参数用于传递一系列数量不确定的参数
#也可以整体传递一个元组或列表
#必须参数必须在可变参数之前
#默认参数必须在参数列表最后
def demo(*param):
    print(param)
    print(type(param))

demo(8, 9, 10, 11, 12)
a = (1, 2, 3, 4)
demo(*a)

def demo1(p1, *p2, p3 = 2):
    print(p1)
    print(p2)
    print(p3)

demo1("a", 10, 11)
demo1("abc", 1, 2, 3, 4, 5, p3 = 36)
#五、关键字可变参数
#支持任意个数的关键字参数

def city_temp(**param):
    for k,value in param.items():
        print(k,":",value)
    print(type(param))  #可以发现参数实质为字典类型

#直接用关键字传参
city_temp(bj = "29c", sh = "32c", gz = "31c", nj = "34c")

#也可以通过“**”直接将一个字典传给函数
a = {"wh":"35c", "cq": "34c", "nc": "33c"}
city_temp(**a)