如何在Python中改变None的值?

10 投票
1 回答
1777 浏览
提问于 2025-04-15 20:58

我现在正在阅读《Dive Into Python》的第5.8章,Mark Pilgrim提到:

在Python中没有常量。只要你努力,任何东西都可以被改变。这和Python的一个核心原则相符:不好的行为应该被劝阻,但不是禁止。如果你真的想改变None的值,你是可以做到的,但当你的代码变得难以调试时,可别来找我。

我在解释器中试了一下

None = "bad"

结果我得到了一个错误:SyntaxError: assignment to None

我只是出于好奇,想知道怎么改变None。

编辑:

有趣的是:

>>> import __builtin__
>>> __builtin__.None is None
True
>>> None
>>> None = "bad"
  File "<stdin>", line 1
SyntaxError: assignment to None
>>> __builtin__.None = "bad"
  File "<stdin>", line 1
SyntaxError: assignment to None
>>> setattr(__builtin__, "None", "bad")
>>> __builtin__.None
'bad'
>>> None
>>> __builtin__.None is None
False
>>> __builtin__.None = None
  File "<stdin>", line 1
SyntaxError: assignment to None

还有

>>> class Abc:
...     def __init__(self):
...             self.None = None
... 
  File "<stdin>", line 3
SyntaxError: assignment to None
>>> class Abc:
...     def __init__(self):
...             setattr(self,'None',None)
... 
>>> 

所以我想“None = ”在任何情况下都不管用。

1 个回答

14

你首先需要安装一个旧版的Python(我记得需要是2.2或更早的版本)。在2.4及更新的版本中,某些情况下(我觉得在2.3中也是这样),这个赋值操作会出现语法错误。马克的那本优秀书籍,现在有点过时了。

撰写回答