深入淺析Python 中 is 語法帶來的誤解
起步
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)文章
神經(jīng)網(wǎng)絡(luò)(BP)算法Python實(shí)現(xiàn)及應(yīng)用
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)(BP)算法及簡(jiǎn)單應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04python 實(shí)現(xiàn)的IP 存活掃描腳本
這篇文章主要介紹了python 實(shí)現(xiàn)的IP 存活掃描腳本,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12python hbase讀取數(shù)據(jù)發(fā)送kafka的方法
今天小編就為大家分享一篇python hbase讀取數(shù)據(jù)發(fā)送kafka的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12使用 Python 的 pprint庫(kù)格式化和輸出列表和字典的方法
pprint是"pretty-print"的縮寫,使用 Python 的標(biāo)準(zhǔn)庫(kù) pprint 模塊,以干凈的格式輸出和顯示列表和字典等對(duì)象,這篇文章主要介紹了如何使用 Python 的 pprint庫(kù)格式化和輸出列表和字典,需要的朋友可以參考下2023-05-05使用python BeautifulSoup庫(kù)抓取58手機(jī)維修信息
這篇文章主要介紹了一個(gè)使用python抓取58手機(jī)的精準(zhǔn)商家信息,使用BeautifulSoup API的方法2013-11-11基于virtualenv創(chuàng)建python虛擬環(huán)境過程圖解
這篇文章主要介紹了基于virtualenv創(chuàng)建python虛擬環(huán)境過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Python opencv圖像基本操作學(xué)習(xí)之灰度圖轉(zhuǎn)換
使用opencv將圖片轉(zhuǎn)為灰度圖主要有兩種方法,第一種是將彩色圖轉(zhuǎn)為灰度圖,第二種是在使用OpenCV讀取圖片的時(shí)候直接讀取為灰度圖,今天通過實(shí)例代碼講解Python opencv圖像基本操作學(xué)習(xí)之灰度圖轉(zhuǎn)換,感興趣的朋友一起看看吧2023-02-02