为什么python允许覆盖内置常量?

mik*_*ike 1 python constants built-in

虽然True,False内置的常量,下面是允许在Python.

>>> True = False
>>> a = True
>>> b = False
>>> print a,b
False False
Run Code Online (Sandbox Code Playgroud)

有关为什么允许这样做的任何参考?

编辑:这只发生在Python 2.x(如所有指出).

mgi*_*son 9

我认为"我们都同意这里的成年人"的蟒蛇意识形态适用于此.Python没有私有类成员,因为没有真正的理由阻止用户搞乱某些东西......如果他们用他们不理解的东西探索,那么当代码中断时他们会得到他们应得的东西.同样重要的是能够重新分配内置...

list = tuple
Run Code Online (Sandbox Code Playgroud)

请注意,您询问的情况在python 3.x中明确禁止,但您仍然可以分配给builtins ...

>>> True = False
  File "<stdin>", line 1
SyntaxError: assignment to keyword
>>> list = tuple
Run Code Online (Sandbox Code Playgroud)

  • 关于"我们都同意这里的成年人"的+1 (2认同)