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)