自定义函数
自定义函数的形式如下:
def 函数名称(参数):
函数体
return 值
函数的调用:
函数名称(参数)
难点在参数:
1,位置参数,如:
def add(x,y):
return x+y
add(2,3)
#两个参数的顺序必须一一对应, 少一个多一个都不行。
2,关键字参数
使用命名(关键字)来指定函数中的参数。
def func(a, b=5, c=10):
print('a is', a, 'and b is', b, 'and c is', c)
func(3, 7)
func(25, c=24)
func(c=50, a=100)
输出:
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50
3,默认参数,如:
def add(x,y=10)
return x+y
>>> add(3)
13
>>> add(3,4)
7
注意:必选参数在前,默认参数在后
默认参数为不可变对象
3,可变参数,如:
当不确定函数调用的时候会传递多少个参数(不传参也可以),可用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便。
1、 包裹位置传递
def fc(*args):
print(arg)
>>> fc(1,2,3)
(1, 2, 3)
注:*args将传入的多个位置参数包裹成一个元组,元祖名为agrs,
2、 包裹关键字传递
def fd(**kwargs):
print(kwargs)
>>> fd(a=1,b=2,c=3)
{'a': 1, 'b': 2, 'c': 3}
注:**args 将传入的多个命名参数包裹成一个字典,字典名为args
4,限定参数形式
def f(a,b=0,/):
pass
调用函数f(1,b=2)会报错
def f(a,b,*,c,d):
pass
注:*前面是位置参数,*后面是命名关键字参数
调用f(1,2,c=3,d=4)这样才可以,且参数数量一个也不能少
5,函数注释:
def(a:int,b:'int>0'=10)->int:
pass
注释参数的类型及返回值的类型,不能限定参数类型。