【发布时间】:2011-01-04 12:44:16
【问题描述】:
作为回答另一个问题的一部分,我编写了以下代码,乍一看其行为似乎很奇怪:
print True # outputs true
True = False; print True # outputs false
True = True; print True # outputs false
True = not True; print True # outputs true
谁能解释这种奇怪的行为?我认为这与 Python 的对象模型有关,但我不确定。
是Cygwin下的2.5.2版本。
【问题讨论】:
-
这不是很好的老笑话
#define true false吗? -
在第 3 版中,分配 True = False 会引发一个 sintax 错误,所以我想您的问题是指第 2 版
-
这有什么奇怪的?需要详细说明吗?
-
@Paul,你对 BCPL 了解多少?还是RCA1802组装?还是面向对象的 COBOL?还是 F#、Haskell 或 Forth? SO 的高代表并不能说明某人在特定领域的知识渊博。我的 Python 知识远不及其他领域那么全面,而且无关紧要,因为 SO 是针对所有技能水平的。最重要的是,我不完全确定“=”和“==”之间的区别在哪里。或许你可以解释一下?
-
@SLott,问题或多或少是这样的:为什么甚至可以分配给常量?但是@Balpha 和@Ignacio 为我澄清了这一点,因为 True 和 False 不是关键字(至少在 Python 2 中),而只是指向底层对象的名称(并且指针可以更改)。
标签: python python-2.x