python 函数参数定义规范
def func(a,b,*args, x=1,**kwargs):
print(a,b,args,defualt,kwargs)
#a,b为位置参数,*args为动态参数中的位置参数,可以为任意多个,组成一个元祖。
#x为默认参数 ,**kwargs为动态参数中的默认参数,可以为任意多个,组成一个字典
#顺序:位置参数,*args,默认参数,**kwargs ,顺序不可改变。
假设需要传递一个列表,而我们现在不修改func这个函数的内容,只需要在传实参的时候加上一个*即可。
举例:
定义一个funx
def func(*arg):
print(*arg)
list = [1,2,3,4,5]func(list) #打印 [1, 2, 3, 4, 5] ,因为传递进去的是一个列表
func(*list) #打印 1 2 3 4 5] ,因为传递进去的是五个参数
def func(**arg):
print(arg) #{"x":1, "y":2}
dict = {"x":1, "y":2}func(**dict) #组合起来的参数分开传递进去
这个方式即把list整个列表/字典的所有元素当做*args/**kwargs传递了进去。
关于*,站在形式参数的角度上 *相当于把各个参数组合在一起,在实参的角度上是把组合起来的参数依序分开传递。
函数的注释:
在def下方添加注释块
'''
这个函数实现了XX功能
参数1:……
参数2:……
return值的含义......
'''
def test(a,b = {}):
b[a] = '1'
print(l)test(1) #{1: '1'}
test(2) #{1: '1', 2: '1'}
test(3) #{1: '1', 2: '1', 3: '1'}
# 如果默认参数的值是一个可变数据类型,
# 那么每一次调用函数的时候,
# 如果不传值就公用这个数据类型的资源