5:对函数的默认参数有什么要求?还有什么参数?
默认参数必须指向不变对象!否则,频繁调用默认函数,会修改默认函数指向的内存存储内容。
还有:
必选参数、默认参数、可变参数(tuple)、关键字参数(dict)和命名关键字参数(限制关键字参数的名字,*后面的参数被视为命名关键字参数。)
def fnA(a,b='b',*c): # a必选参数、b默认参数、可变参数c
pass
def fnB(a,b='b',**d): # 关键字参数d
pass
def fnC(a,b='b',*c, e, f):
print('a =', a, 'b =', b, 'c =', c, 'd =', e, 'f=', f)
# 命名关键字参数e,f
注:已经有了一个可变参数c,后面跟着的命名关键字参数就不再需要特殊分隔符*;且命名关键字参数为限制的关键字参数所以需要key = value值对
也可以tuple和dict做为参数传入:
args = (1,2,3,4,5)
kw = {'e': 6, 'f': 'qwe'}
fnC(*args, **kw)
a = 1 b = 2 c = (3,4,5) d = 6 f= qwe
备注:*args和**kw是Python的习惯写法