如何在Python中更改None的值?

Mic*_*oka 8 python syntax

我目前正在阅读Dive Into Python的第5.8章,Mark Pilgrim说:

Python中没有常量.如果你足够努力,一切都可以改变.这符合Python的核心原则之一:不应该阻止不良行为但不禁止行为.如果你真的想要更改None的值,你可以这样做,但是当你的代码无法调试时,不要来找我.

我在翻译中试过这个

None = "bad"
Run Code Online (Sandbox Code Playgroud)

我得到一个SyntaxError:赋值给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
Run Code Online (Sandbox Code Playgroud)

>>> 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)
... 
>>> 
Run Code Online (Sandbox Code Playgroud)

所以我猜'无='只是在任何情况下都不起作用

Ale*_*lli 13

首先必须安装版本的Python(我认为它需要2.2或更早版本).在2.4及更新版本(我相信2.3)中,有问题的分配是语​​法错误.马克的优秀书籍,唉,现在有点过时了.

  • 你仍然可以在2.6中做"True = False".它会产生你想要的效果. (5认同)
  • @Ken大概是使名称"True"指向名称"False"的值(也就是说,假布尔对象).换句话说,要摧毁你拥有的每一丝理智. (4认同)