可变对象如list
,tuple
,dictionary
或者instances
,在一个函数的默认参数中只会被初始化一次 .
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
[1]
[1, 2]
[1, 2, 3]
如果想被初始化多次,应该如下使用
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
参数(args)
形参和实参
形参是函数括号里面的参数(定义的时候),实参是传递给形参的值(调用的时候)
def test(a, b):# ab是形参
return a+b
test(a=1,b=2)# 1,2分别是a,b的实参
默认参数
可以给参数默认值
def test(a=1,b):# 如果调用参数时不给a赋值,则默认a=1
Positional-or-Keyword Arguments
可以指定哪些参数是位置参数,哪些参数是关键词参数
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
>>> def standard_arg(arg): //直接通过位置传参
... print(arg)
...
>>> def pos_only_arg(arg, /): //不能通过`arg=1`传参,因为规定是位置参数
... print(arg)
...
>>> def kwd_only_arg(*, arg): //不能通过
... print(arg)
...
>>> def combined_example(pos_only, /, standard, *, kwd_only):
... print(pos_only, standard, kwd_only)