nie*_*kas 3 python dictionary arguments immutability
我想定义一个函数,它有类似字典的参数,例如:
def my_func(params={'skip': True}):
print(params['skip'])
params['skip'] = False
Run Code Online (Sandbox Code Playgroud)
但是,如果使用可变字典dict()- 它只会为函数创建一次。对该字典所做的修改会在下一次调用期间出现。
my_func() # prints True
my_func() # prints False
Run Code Online (Sandbox Code Playgroud)
目前我唯一的想法是使用键/值对的元组,它可以转换成字典,而不是提供类似字典的数据。
def my_func(params=(('skip', True))):
params = dict(params)
print(params['skip'])
params['skip'] = False
Run Code Online (Sandbox Code Playgroud)
但是,我真的很想避免这种对字典的显式转换。我的问题是:是否有一个不可变字典替代 for ,dict()因为有tuple()for list()?
这将避免每次调用func使用默认params共享相同的内容dict(这似乎是您的问题):
def my_func(params=None):
params = {'skip': True} if params==None else params
Run Code Online (Sandbox Code Playgroud)