我正在与SO用户进行讨论,我们正在尝试确定Python模块是否在变量中保存 - 例如sys
, import sys
- 是可变的或不可变的。
有没有人有一个好的答案?
问题来自于讨论什么类型的对象可以成为Python dicts
的键。 Python docs声称"只有不可变元素可以用作字典键,因此只有元组而不是列表可以用作键。"但是模块 - 作为可变对象的一个示例 - 可以用作键,如
x = {sys: 1}
答案 0 :(得分:5)
Python文档声称“只有不可变元素可以用作 字典键,因此只能使用元组而不是列表 密钥。“但是一个模块 - 只是可变对象的一个例子 - 可以 用作关键
事情必须是不可变的才能被用作dict键。相反,考虑进行==
比较的所有关于它们的内容必须是不可变的。模块的==
按对象标识工作,所以做类似
import sys
sys.foo = 3
不会更改用于==
比较的任何信息。因此,它们可以用作字典键。
答案 1 :(得分:3)
这是可变的。你可以这样做:
>>> import sys
>>> sys.blah = 100
>>> sys.blah
100