【发布时间】:2020-10-20 03:06:25
【问题描述】:
我想定义一个函数,它有像字典一样的参数,例如:
def my_func(params={'skip': True}):
print(params['skip'])
params['skip'] = False
但是,如果使用可变字典 dict() - 它只会为函数创建一次。并且在下次调用期间会显示对该字典所做的修改。
my_func() # prints True
my_func() # prints False
目前我唯一的想法是使用键/值对的元组,可以将其转换为字典,而不是像字典一样提供数据。
def my_func(params=(('skip', True))):
params = dict(params)
print(params['skip'])
params['skip'] = False
但是,我真的很想避免这种显式转换为字典。
我的问题是:dict() 是否有一个不可变字典替代品,因为 list() 有 tuple()?
【问题讨论】:
-
您可以创建 dict 的 deepcopy,然后在函数体中使用。
copy模块为 dicts 提供了 deepcopy 功能。 -
为什么不简单地使用带有默认参数的正确函数参数?
def my_func(skip=True) -
如果
params是不可变的,您希望params['skip'] = False的结果是什么?
标签: python dictionary arguments immutability