简介
- 定义:具有特定功能的一段代码
- 优点:
- 减少代码的重复书写
- 将功能的实现者与使用者分离,进行函数回调,提高开发效率
- 分类:
- 库函数:print、type、input、len等
- 自定义:自己封装的函数
使用
- 定义格式:
def 函数名([参数列表]):
函数体
-
函数名:符合标识符命名规范即可
-
函数体:功能代码
-
参数列表: 可有可无
-
返回值:可有可无
-
如何调用:
函数名([参数列表])
-
执行时机:调用时执行,不调用不执行
-
函数分类:
- 无参无返回值
# 函数功能:打印“Hello” def test(): print("Hello")
- 有参无返回值:
# 函数功能:打印传入的变量 def test(a): print(a)
- 无参有返回值:
# 函数功能:返回数字1 def test(): return 1
- 有参有返回值:
# 函数功能:返回两数的乘积 def test(a, b): return a * b
-
参数分类:
- 形参:形式参数,就是写在函数定义处的参数
- 实参:实际参数,就是在函数调用时传递的参数
- 位置参数:函数定义时没有默认值的参数,也较比传参数。调用时实参与定义的位置参数要一一对应。
- 默认参数:函数定义时有默认值的参数,调用时可以不传递该参数。默认参数需要放在末尾。
- 关键字参数:函数调用时指定参数的名字,参数的位置无需考虑
- 可变长参数:
- *args:保存调用时多传的位置参数
- **kwargs:保存调用时多传的关键字参数
- 实例:
"""
函数声明,也称函数实现
声明时的参数均为形参
a,b为位置参数;c为默认值参数;
args以元组的形式存储多传的位置参数,需要以*开头
kwargs已字典的形式存储多传的位置参数,需要以**开头
"""
def test(a, b, c=None, *args, **kwargs):
print("a:", a)
print("b:", b)
print("c:", c)
print("args:", args)
print("**kwargs:", kwargs)
"""
调用函数,也称函数回调
调用时的参数均为实参
1,2对应着形参a,b
3对应着形参c
4,5多传的位置参数由args存储
e,f多传的关键字参数由kwargs存储
"""
test(1, 2, 3, 4, 5, e=6, f=7)
# 也可以这样写
test(b=2, a=1, c=3)
结果:
a: 1
b: 2
c: 3
args: (4, 5)
**kwargs: {'e': 6, 'f': 7}
a: 1
b: 2
c: 3
args: ()
**kwargs: {}
注意事项
:- 函数定义的位置不是随意的,调用必须定义在函数声明后
- 函数的名字不可以相同,语法不会报错,但后者会覆盖前者