1. 程式人生 > >你不知道的Python(3)

你不知道的Python(3)

今天這裡會給大家介紹Python 的兩個小小的坑,一不注意就會踩。

·大家都知道在Python的字串中, \ 一般表示轉義,比如在字串中 \n 表示換行符,\t 表示製表符等等,如果我們要輸出 \ 本身的話,一般來說有兩種方式:

第一種方式就是在字串中用 \\ 表示 \ 本身

第二種方式就是用原始字串表示,在原始字串中 \ 沒有特殊意義

但是一不小心你就會遇見如下一種情況:當你準備在字串末尾輸出一個 \ 的時候

此時我們發現第一種方式可以順利輸出,第二種方式表示卻會報錯。這是什麼原因呢?

原來這是因為在原始字串中,\ 沒有特殊意義,所以直譯器在原始字串中遇到 \ 的時候就自動放行 \ 和其後的一個字元

而不做轉義處理。所以在原始字串中,當 \ 出現在字串末尾時,直譯器找不到其後當字元,便會報錯。

所以,如果你需要在字串末尾輸出 \ 的時候,還是乖乖採用 \\ 來表示吧。

·在Python中,且、或、非使用and、or、not表示。

可是你會發現,如下情況竟會報錯

按照日常邏輯,這應該是不會出錯的。可是到底是什麼導致此情況發生的呢?

其實就是運算子優先順序的原因:Python中==的優先順序是高於not的

所以not x == y其實相當於not (x == y),也就是not (True == False),而不是我們理解的(not True) == False,所以結果自然為True。

所以當直譯器遇到的x == not y時,由於優先順序的原因,此表示其實相當於(x == not) y,自然就會報錯

對於這兩個小坑,大家瞭解了嗎?

大家可以去多多支援原作者,原連結如下:https://github.com/leisurelicht/wtfpython-cn#structure-of-the-examples%E7%A4%BA%E4%BE%8B%E7%BB%93%E6%9E%84