函数的定义与使用
01.函数的定义与使用
1.定义函数
def 函数名(参数列表):
函数体
函数的调用:返回值=函数名(输入参数)
2.返回值
- 使用return返回函数计算结果
- 可以有多个return语句,但是真正执行时最多运行1次,碰到return语句,函数结束
- 如果没有return语句,函数返回值为None
- return可以返回多个变量
02.传参机制
1.形参和实参
形参:定义函数时的输入参数
实参:调用函数式传递的参数
2.值传递
函数中的形式参数变化,不会导致实际参数的变化,这是由于传递的是数值单方向的。参数为不可变类型,字符串,数字,元组。
3.引用传递
函数中形式参数变化,会导致实际参数一起变化,这是由于传递的是变量。参数为可变类,列表,字典。
- 尽量不要传递列表,字典这种可变数据
- 即使传参,也尽量不要改动这些参数
- 技巧:传递列表,字典这类变量,传递一个副本,这样就算修改实参也不会发生变化
4.位置参数
参数个数相同,顺序一一对应
5.关键字参数
根据形参的名字传递参数
def f(a,b,c,d,e):
print(a)
print(b)
print(c)
print(d)
print(e)
f(e=5,d=4,a=1,b=2,c=3)
同时存在时,未知参数在前,关键字参数在后
6.默认参数
定义函数时,给一个形参默认值,所有的默认参数必须放在最后。调用时如果省略该参数则该参数为默认值
def f(a,b,c=3,d=4,e=5):
print(a)
print(b)
print(c)
print(d)
print(e)
f(1,2)#后三个参数使用默认值
f(1,2,5)#c=5,不使用默认值
7.不定长参数(*)
①变成元组
- 形式参数前加*,表示不定长参数,可以按照未知参数的格式传递多个参数
- 加了星号*的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数
def f(a,b,*argtuple):
print(a)
print(b)
print(argtuple)#(3,4,5,6,7,8)
f(1,2,3,4,5,6,7,8)
②变成字典
- 形式参数前加**,表示不定长参数,可以按照关键字参数的格式传递多个参数,必须加名词
- 加了星号**的参数会以字典(dict)的形式导入
def f(a,b,**args):
print(a)
print(b)
print(args)#{'c':4,'d':4,'e':5}
f(1,2,c=3,d=4,e=5)
03.变量作用域
局部变量:函数内部的变量,仅作用于函数内部
全局变量:函数外部的变量,作用于全局
将函数内部的局部变量变成全局变量:在变量前加global