# python 3.8.10
class Value():
def __init__(self, value) -> None:
self.value = value
def fun1(*args, li: list = []):
for e in args:
li.append(e)
return li
def fun2(di: dict = {
}, **kwargs):
for k in kwargs.keys():
di[k] = kwargs[k]
return di
def fun3(value, val: Value = Value(None)):
val.value = value
return val
li = fun1('a', 's', 'd')
print(li)
li = fun1('q', 'w', 'e')
print(li)
di = fun2(a='a', s='s', d='d')
print(di)
di = fun2(q='q', w='w', e='e')
print(di)
va0 = fun3('a')
print(va0.value)
va1 = fun3('s')
print(va0.value)
print(va1.value)
参数默认值仅在方法初始化时初始化一次,所以就会出现下面这种现象。
['a', 's', 'd']
['a', 's', 'd', 'q', 'w', 'e']
{'a': 'a', 's': 's', 'd': 'd'}
{'a': 'a', 's': 's', 'd': 'd', 'q': 'q', 'w': 'w', 'e': 'e'}
a
s
s
还是得在方法内部初始化。
def fun2(di:dict={
},**kwargs):
if di=={
}:
di={
}
for k in kwargs.keys():
di[k]=kwargs[k]
return di
di=fun2(a='a',s='s',d='d')
print(di)
di=fun2(q='q',w='w',e='e')
print(di)
{'a': 'a', 's': 's', 'd': 'd'}
{'q': 'q', 'w': 'w', 'e': 'e'}