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()

这将避免使用默认 paramsfunc 的每次调用共享相同的 dict(这似乎是您的问题):

def my_func(params=None):
    params = {'skip': True} if params==None else params