我目前正在阅读Dive Into Python的第5.8章,Mark Pilgrim说:
Python中没有常量。如果你足够努力,一切都可以改变。这符合Python的核心原则之一:不应该阻止不良行为但不禁止行为。如果你真的想要更改None的值,你可以这样做,但是当你的代码无法调试时,不要来找我。
我在翻译中尝试了这个
None = "bad"
我得到了 SyntaxError:赋值为无
出于好奇,你怎么改变无?
编辑:
有趣的是:
>>> 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)
...
>>>
所以我猜'无='只是在任何情况下都不起作用
答案 0 :(得分:13)
首先必须安装Python的旧版本(我认为它必须是2.2或更早版本)。在2.4及更新版本(我相信2.3)中,有问题的分配是语法错误。唉,马克的优秀书现在有点过时了。