雖然True
,False
是builtin constants,下面是允許在Python。爲什麼python允許覆蓋內建常量?
>>> True = False
>>> a = True
>>> b = False
>>> print a,b
False False
爲什麼允許這麼做?
編輯:這隻發生在Python 2.x(所有指出)。
雖然True
,False
是builtin constants,下面是允許在Python。爲什麼python允許覆蓋內建常量?
>>> True = False
>>> a = True
>>> b = False
>>> print a,b
False False
爲什麼允許這麼做?
編輯:這隻發生在Python 2.x(所有指出)。
請記住,這隻發生在Python 3之前的Python版本。這是Python的哲學的一部分,即一切都應該是動態的。
事實上在Python 2 True
不是關鍵字。它是一個參考結合到bool
對象。你可以嘗試在你的Python 2.x的VM:
>>> type(True)
<type 'bool'>
在Python 3它更改爲關鍵字,並試圖重新綁定在一個異常的參考結果:
>>> True = []
File "<stdin>", line 1
SyntaxError: assignment to keyword
我認爲,"We're all consenting adults here"蟒蛇意識形態在這裏也適用。 Python沒有私有類成員,因爲沒有真正的好理由來阻止用戶搞砸某些東西......如果他們去了解他們不明白的東西,那麼當代碼破壞時他們會得到他們應得的東西。同樣的事情會與重新分配內建的能力...
list = tuple
需要注意的是,你問在Python 3.x中被明令禁止的,但如果你仍然可以分配給內建...
>>> True = False
File "<stdin>", line 1
SyntaxError: assignment to keyword
>>> list = tuple
傳統上,Python的設計使用的語法必須儘可能少的關鍵字;在py3K之前,True和False不被視爲必要的關鍵字。除非Guido在關閉前遇到這個問題,否則您可能得不到一個好的答案。 (但this thread說明了爲什麼它沒有更改)
+1的線程 – mike 2013-02-20 13:42:39
這是不在Python 3.X – mgilson 2013-02-20 12:08:46
有了巨大的力量,內容非常重要 – pcalcao 2013-02-20 12:15:11
這是屬於大家的理念可以改變一切。我認爲它源於Python的腳本特性,在小程序中給予最大的靈活性。這並不擴展那麼好,例如語言「E」 http://en.wikipedia.org/wiki/E_%28programming_language%29 – User 2013-02-20 16:34:36