Python海象運(yùn)算符的用法教程
前言
大家好,我是閑歡,你們的老相識(shí)呀!
海象可謂是最大的哺乳動(dòng)物了,有人稱它是北半球的“土著”居民。它圓頭,短而闊的嘴巴,粗大的鼻子,上犬齒形成長(zhǎng)達(dá)40厘米-90厘米的獠牙,每只4公斤以上。雄海象體長(zhǎng)可達(dá)4米,重2噸。海象喜群居,數(shù)千頭簇?fù)碓谝黄稹?/p>
海象兩眼瞇得像缺乏活力的老頭子,它們愛睡懶覺,一生中大多時(shí)間是躺在冰上度過的,還能在水里睡覺,真是牛出天際。
作為996的卷農(nóng),我非常羨慕它們的生活,好想跟他們一樣躺平。
好了,言歸正傳,咱們繼續(xù)卷吧!今天給大家?guī)砹艘粋€(gè)以海象命名的運(yùn)算符——海象運(yùn)算符。
Python 海象運(yùn)算符是在 PEP 572 中提出,并在 Python3.8 版本并入和發(fā)布。
海象運(yùn)算符的英文原名叫 Assignment Expresions ,即 賦值表達(dá)式。海象表達(dá)式由一個(gè) : 和 一個(gè) = 組成,即 :=
。我們一般稱作 walrus operator(海象運(yùn)算符),因?yàn)樗雌饋砭褪且粋€(gè)海象旋轉(zhuǎn) 90° 而成。作者還是很有想象力的,這都能聯(lián)系起來!
語法
海象運(yùn)算符的語法格式是:
(variable_name := expression)
這是一個(gè)新的賦值運(yùn)算符,跟我們常見的 =
類似,一個(gè)變量名后面跟一個(gè)表達(dá)式。
用法
用于 if-else 條件表達(dá)式
常規(guī)寫法:
a?=?5 if?a?>?1: ????print('do?sth!')
升級(jí)寫法:
if?a?:=?5?>?1: ????print('do?sth!')
用于 while 循環(huán)
常規(guī)寫法:
n?=?3 while?n: ????print('do?sth!') ????n?-=?1
升級(jí)寫法:
n?=?3 while?(n?:=?n?-?1)?+?1:? ????print('do?sth!')
這里加1是因?yàn)閳?zhí)行輸出前n就減1了。
讀取文件
常規(guī)寫法:
fp?=?open("test.txt",?"r") while?True: ????line?=?fp.readline() ????if?not?line: ????????break ????print(line.strip()) fp.close()
升級(jí)寫法:
fp?=?open("test.txt",?"r") while?line?:=?fp.readline(): ????print(line.strip())
在合適的場(chǎng)景中使用海象運(yùn)算符可以降低程序復(fù)雜性,簡(jiǎn)化代碼,甚至可以提高程序的性能。
不適用場(chǎng)景
雖然海象運(yùn)算符好用,但也不是所有場(chǎng)景都能用,還是有它的局限性的。
變量賦值
我們不能將 =
運(yùn)算符與 :=
運(yùn)算符一起使用,海象運(yùn)算符只能是表達(dá)式的一部分:
a?=?5?#?Valid? a?:=?5?#?InValid? empty_list?=?[]?#?Valid? empty_list?:=?[]?#?InValid?
如果你這樣寫,編輯器會(huì)直接提示錯(cuò)誤。
加減法
a?+=?5?#?Valid a?:+=5?#?Invalid?
Lambda函數(shù)中的賦值表達(dá)式
(lambda:?a:=?5)?#?Invalid lambda:?(a?:=?5)?#?Valid,?but?not?useful (var?:=?lambda:?5)?#?Valid
爭(zhēng)議
關(guān)鍵字
海象運(yùn)算符使用 :=
這個(gè)關(guān)鍵字,是大多數(shù)開發(fā)人員都不太喜歡的,這個(gè)關(guān)鍵字跟我們平時(shí)接觸到的都不一樣,創(chuàng)造者獨(dú)辟蹊徑。
我也不太喜歡這個(gè),但是也尊重創(chuàng)造者的規(guī)則,畢竟人家給大家?guī)磉@么實(shí)用的運(yùn)算符。
運(yùn)算符名稱
一些開發(fā)人員認(rèn)為“海象運(yùn)算符”這個(gè)名稱太抽象了,不能清晰地表達(dá)出這個(gè)運(yùn)算符的含義,幾乎百分之百的人第一次看到這個(gè)名稱,不會(huì)想到它的功能。
歡哥以為,既然沒有一套規(guī)定的命名方法,作者取個(gè)有意義的名字也無可厚非吧。
總結(jié)
從此以后,我們的武器庫中又多了一件常規(guī)武器,大家在打仗(卷別人)時(shí),不要忘了使用,對(duì)程序的性能和代碼簡(jiǎn)潔性都會(huì)有提升。
到此這篇關(guān)于Python海象運(yùn)算符的用法教程的文章就介紹到這了,更多相關(guān)Python海象運(yùn)算符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用Beautiful Soup實(shí)現(xiàn)解析網(wǎng)頁
在這篇文章中,我們將介紹如何使用 Python 編寫一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲,以獲取并解析網(wǎng)頁內(nèi)容。我們將使用 Beautiful Soup 庫,它是一個(gè)非常強(qiáng)大的庫,用于解析和操作 HTML 和 XML 文檔。讓我們開始吧2023-05-05跟老齊學(xué)Python之關(guān)于類的初步認(rèn)識(shí)
這篇文章主要介紹了Python中關(guān)于類的一些術(shù)語解釋,雖然有些枯燥,但是要了解類的話,這些內(nèi)容是必須的2014-10-10如何用Python實(shí)現(xiàn)簡(jiǎn)單的Markdown轉(zhuǎn)換器
這篇文章主要介紹了如何用Python實(shí)現(xiàn)簡(jiǎn)單的Markdown轉(zhuǎn)換器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07python實(shí)現(xiàn)簡(jiǎn)單石頭剪刀布游戲
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單石頭剪刀布游戲,相信大家在童年或者生活中都玩過石頭剪刀布這個(gè)游戲,這個(gè)游戲需要兩個(gè)及以上的人。而今天,網(wǎng)上也實(shí)現(xiàn)了石頭剪刀布的游戲。通過初步學(xué)習(xí)python,也學(xué)會(huì)了如何編寫這個(gè)游戲。下面一起來看看詳細(xì)內(nèi)容吧2021-10-10pandas factorize實(shí)現(xiàn)將字符串特征轉(zhuǎn)化為數(shù)字特征
今天小編就為大家分享一篇pandas factorize實(shí)現(xiàn)將字符串特征轉(zhuǎn)化為數(shù)字特征,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12numpy和pandas中數(shù)組的合并、拉直和重塑實(shí)例
今天小編就為大家分享一篇numpy和pandas中數(shù)組的合并、拉直和重塑實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06在pycharm中關(guān)掉ipython console/PyDev操作
這篇文章主要介紹了在pycharm中關(guān)掉ipython console/PyDev操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06python3使用flask編寫注冊(cè)post接口的方法
今天小編就為大家分享一篇python3使用flask編寫注冊(cè)post接口的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12python3注冊(cè)全局熱鍵的實(shí)現(xiàn)
這篇文章主要介紹了python3注冊(cè)全局熱鍵的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03