如何在Python中更改None的值?

9
我目前正在阅读《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 中也是如此)。 Mark 的优秀书籍已经有些过时了。


我认为2.3版本会给你一个SyntaxWarning,供参考。 - perimosocordiae
谢谢回复,我猜在新版本中不再支持“thugs”了。 - Michael Ekoka
6
虽然在2.6版本中仍然可以执行True = False的操作,而且这样做会产生您想要的效果。 - viraptor
5
假设为了让名称“True”指向与名称“False”相同的值(也就是假的布尔对象),换句话说,是为了毁掉你所有理智。 - Devin Jeanpierre
这不仅仅是为了赋值发生的作用域吗? - wRAR
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接