Python 中有不可变字典类型吗?

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

Sco*_*ter 6

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

def my_func(params=None):
    params = {'skip': True} if params==None else params
Run Code Online (Sandbox Code Playgroud)

  • 更短,更好,`params = params 或 {'skip': True}` (2认同)