一.函数的定义和调用
1.1 定义——三要素:参数、函数体、返回值
def 函数名(参数):
函数体
return 返回值
1.2 调用
函数名(参数)
二.函数的参数
1.形参:函数定义时括号里的参数
2.实参:函数实际调用时给定的参数
3.位置参数:
按照定义时参数的位置一个不多一个不少按顺序给参
4.关键字参数:
def function(x, y, z):
...
调用时:function(z = 1, y = 2, x = 3)
若都是关键字参数,位置可以随意
5.若关键字参数和位置参数混合使用,位置参数要在关键字参数前,保证每个参数都有被赋值。
调用时:function(1, 2, z = 3)
6.不能为同一个形参重复传值
7.默认参数:在定义时就给形参赋值,作为默认值,设置的值一定要是不可变类型(数字、字符串、元组)
def function(x, y, z = 6):
...
定义时默认参数一定要放在其他形参的后面
在调用时可以不对默认参数赋值
8.让参数变成可选的
def function(x, y, z = None):
...
9.不知道会传过来多少参数——在参数列表最后加上可变长参数*args
调用时前面的参数一一赋值,多余的参数打包以元组的方式打包给args
若没有多余参数则args就是一个空的元组
def function(x, y, z = 6, *args):
print(args)
function(1, 2, 3, 4, 5, 6)
>>>(4, 5, 6)
10.可变长参数——**kwargs
多余的参数必须是按关键字参数赋值,并以字典的形式打包给kwargs
def function(x, y, z = 6, **kwargs):
print(kwargs)
function(1, 2, 3, a=1, b=2, c=3)
>>>{'a': 1, 'b': 2, 'c': 3}
三.函数变量的作用域
1.局部变量——仅在函数体内定义和发挥作用
函数体外不可使用
2.全局变量——外部定义的都是全局变量
可以在函数体内被直接使用
3.在函数体内用global定义全局变量
global x = 6
四.函数的返回值
1.多个返回值——return x, y, z
以元组形式打包返回值(x, y, z)
可以以a, b, c = (x, y, z)的形式解包返回值
2.可以有多个return语句,一旦其中一个被执行,就代表了函数调用的结束
3.没有return语句,返回值为None