如何在Python中改变None的值?
我现在正在阅读《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中也是这样),这个赋值操作会出现语法错误。马克的那本优秀书籍,现在有点过时了。