欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入淺析Python 中 is 語法帶來的誤解

 更新時(shí)間:2019年05月07日 09:13:56   作者:weapon  
這篇文章主要介紹了Python 中 is 語法帶來的誤解,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

起步

Python 的成功一個(gè)原因是它的可讀性,代碼清晰易懂,更容易被人類所理解,但有時(shí)可讀性會(huì)產(chǎn)生誤解。

假如要判斷一個(gè)變量是不是 17,那可以:

if x is 17:

x 是 17 肯定是比 x == 17 更加口語化的。

is的誤解

但是如果你嘗試:

if name is "weapon":

這個(gè)判斷不見得管用。is 用來檢查左側(cè)和右側(cè)是否是完全相同的對(duì)象。如果有兩個(gè)不同的字符串對(duì)象,每個(gè)對(duì)象的值是相同的,應(yīng)該使用 == 來判斷,因?yàn)?is 的用法與口語上的區(qū)別挺大的:

if 999 + 1 is 1000: # False

正因?yàn)檫@樣的誤解,在 if 判斷條件上容易讓初學(xué)者掉坑:

answer = 'yes'
if answer is 'y' or 'yes':

你會(huì)發(fā)現(xiàn)不管變量是什么值,判斷都是為真。因?yàn)?is 的優(yōu)先級(jí)高,相當(dāng)于 if (answer is 'y') or ('yes') 。

正確的方法應(yīng)該是 if answer == 'y' or answer == 'yes' 或者 if answer in ('y', 'yes') 。

is not 上的混淆

>>> 'something' is not None
True
>>> 'something' is (not None)
False

is not 是一個(gè)二元運(yùn)算符,應(yīng)該視為一個(gè)整體,不要因?yàn)橹虚g空格而當(dāng)成兩個(gè)詞。底層上,它們也是一個(gè)操作符,CPython 將 s is not None 翻譯成的字節(jié)碼為:

 6 LOAD_NAME        0 (s)
 8 LOAD_CONST        1 (None)
10 COMPARE_OP        9 (is not)

is not 是對(duì) is 相對(duì)應(yīng)的操作符。也可以視為是將 is 判斷的結(jié)果再進(jìn)行取反。

總結(jié)

我同意 Python 非常易讀。每種語言的結(jié)構(gòu)都存在一些“出乎意料”的使用。這并不影響我對(duì) Python 這門語言的喜愛,每個(gè)人都應(yīng)該好好學(xué)習(xí),并小心使用選擇的語言。

以上所述是小編給大家介紹的Python 中 is 語法帶來的誤解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

最新評(píng)論