python的作用域規(guī)則:LEGB原則
為什么Python會(huì)認(rèn)為兩個(gè)完全不同的對(duì)象擁有相等的值塌计?在Python中布爾數(shù)據(jù)類型實(shí)際上是整數(shù)類型的子類黎炉。
在python3中,False和True是真正的保留字肖油,而不是被定義在內(nèi)置模塊的名字空間(builtins)的名字式镐。
在python2中他們只是內(nèi)置模塊中的名字。所以會(huì)得到值2.這是因?yàn)楫?dāng)我們使用+=給True賦值的時(shí)候毁涉,我們并沒(méi)有改變True內(nèi)置模塊中的值屑柔。相反我們創(chuàng)造一個(gè)新的全局變量屡萤。內(nèi)置模塊中的值也存在,只是因?yàn)槿帜K的名字有優(yōu)先順序掸宛,得到的值(2)覆蓋了在內(nèi)置模塊的名字空間中的值(True或1)