Python中的乙個有意思的笑話

2021-09-03 02:04:43 字數 543 閱讀 2672

>>> a = 256

>>> b = 256

>>> a is b

true

>>> a = 257

>>> b = 257

>>> a is b

false

>>> a = 257;b=257

>>> a is b

true

上面是在idle中的一段**。這也是python中的乙個很有意思的笑話。或者說是python直譯器的笑話。出現上面現象的原因很簡單,就是**直譯器的優化。

直譯器為了提高效能會將一些常用的數存放在乙個地方,這個常用的數範圍是[-5,256]中的整數。這個範圍是在實現直譯器的時候設定的。所以上面第一段**中的a和b的位址是一樣的。而257不在這個範圍,他們的位址就不一樣,更具python語言來說也應該是這樣的。除此之外,python直譯器還有乙個優化,在乙個**塊中兩個值相同的數也將會放在一起,idle等互動式直譯器會將乙個命令輸入認為是乙個**塊。第三段**中的a,b是在乙個**塊中,所以位址就是一樣的了。就出現上面這段有意思的**。

乙個有意思的問題

a b這個表示式如何理解?應該理解成a b還是a b,還是a b呢?應該按第一種方式理解。編譯的過程分為詞法解析和 語法解析兩個階段,在詞法解析階段,編譯器總是從前到後找最長的合法token。把這個表 達式從前到後解析,變數名a是乙個token,a後 面有兩個以上的 號,在c語言中乙個 號是合法的t...

乙個有意思的問題

最近做乙個交通管理系統,其中有個使用者投票功能。設想是直接開發乙個自定義的控制項。完成顯示,投票,ip檢索等全部功能。然而卻遇到乙個有意思的問題。具體來說就說,因為是用radiobuttonlist顯示的資料,在用radiobuttonlist.value捕獲使用者輸入時卻發現取出的索引始終為0.即...

乙個有意思的正則

在乙個框架中偶然發現一段比較有意思的正則,到現在還沒完全搞懂,先記錄下 1 3 str string 4 第乙個引數為正則 是左右定界符,就代表每個字串都匹配 5 preg split no empty 不返回空的 6 第 個引數 代表分割多少個陣列 7 chars preg split str,1...