Python 中是否有不可变字典类型?
Is there an Immutable dictionary type in Python?
我想定义一个函数,它有类似字典的参数,例如:
def my_func(params={'skip': True}):
print(params['skip'])
params['skip'] = False
但是,如果使用可变字典 dict()
- 它只会为一个函数创建一次。并且在下一次调用期间会出现对该词典所做的修改。
my_func() # prints True
my_func() # prints False
目前我唯一的想法是使用key/value对的元组,可以将其转换为字典,而不是像数据一样提供字典。
def my_func(params=(('skip', True))):
params = dict(params)
print(params['skip'])
params['skip'] = False
但是,我真的很想避免这种向字典的显式转换。
我的问题是:是否有 dict()
的不可变字典替代方案,因为 list()
有 tuple()
?
这将避免使用默认 params
对 func
的每次调用共享相同的 dict
(这似乎是您的问题):
def my_func(params=None):
params = {'skip': True} if params==None else params
我想定义一个函数,它有类似字典的参数,例如:
def my_func(params={'skip': True}):
print(params['skip'])
params['skip'] = False
但是,如果使用可变字典 dict()
- 它只会为一个函数创建一次。并且在下一次调用期间会出现对该词典所做的修改。
my_func() # prints True
my_func() # prints False
目前我唯一的想法是使用key/value对的元组,可以将其转换为字典,而不是像数据一样提供字典。
def my_func(params=(('skip', True))):
params = dict(params)
print(params['skip'])
params['skip'] = False
但是,我真的很想避免这种向字典的显式转换。
我的问题是:是否有 dict()
的不可变字典替代方案,因为 list()
有 tuple()
?
这将避免使用默认 params
对 func
的每次调用共享相同的 dict
(这似乎是您的问题):
def my_func(params=None):
params = {'skip': True} if params==None else params