在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

?Python 3.8:海象運(yùn)算符的三種用法

科技綠洲 ? 來源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-21 11:07 ? 次閱讀

Python 版本發(fā)展非常快,如今最新的版本已經(jīng)是 Pyhton 3.9,即便如此,有很多人甚至還停留在 3.6 或者 3.7,連 3.8 還沒用上。

很多 Python 3.8 的特性還沒來得及了解,就已經(jīng)成為舊知識(shí)了,比如今天要說的海象運(yùn)算符。

海象運(yùn)算符是在 PEP 572 被提出的,直到 3.8 版本合入發(fā)布。

它的英文原名叫 Assignment Expressions,翻譯過來也就是 賦值表達(dá)式,不過現(xiàn)在大家更普遍地稱之為海象運(yùn)算符,就是因?yàn)樗L(zhǎng)得真的太像海象了。

1. 第一個(gè)用法:if/else

可能有朋友是第一次接觸這個(gè)新特性,所以還是簡(jiǎn)單的介紹一下這個(gè)海象運(yùn)算符有什么用?

在 Golang 中的條件語句可以直接在 if 中運(yùn)算變量的獲取后直接對(duì)這個(gè)變量進(jìn)行判斷,可以讓你少寫一行代碼

import "fmt"

func main() {
    if age := 20;age > 18 {
        fmt.Println("已經(jīng)成年了")
    }
}

若在 Python 3.8 之前,Python 必須得這樣子寫

age = 20
if age > 18:
    print("已經(jīng)成年了")

但有了海象運(yùn)算符之后,你可以和 Golang 一樣(如果你沒學(xué)過 Golang,那這里要注意,Golang 中的 := 叫短變量聲明,意思是聲明并初始化,它和 Python 中的 := 不是一個(gè)概念)

if (age:= 20) > 18:
    print("已經(jīng)成年了")

2. 第二個(gè)用法:while

在不使用 海象運(yùn)算符之前,使用 while 循環(huán)來讀取文件的時(shí)候,你也許會(huì)這么寫

file = open("demo.txt", "r")
while True:
    line = file.readline()
    if not line:
        break
    print(line.strip())

但有了海象運(yùn)算符之后,你可以這樣

file = open("demo.txt", "r")
while (line := file.readline()):
    print(line.strip())

使用它替換以往的無限 while 循環(huán)寫法更為驚艷

比如,實(shí)現(xiàn)一個(gè)需要命令行交互輸入密碼并檢驗(yàn)的代碼,你也許會(huì)這樣子寫

while True:
   p = input("Enter the password: ")
   if p == "youpassword":
      break

有了海象運(yùn)算符之后,這樣子寫更為舒服

while (p := input("Enter the password: ")) != "youpassword":
   continue

3. 第三個(gè)用法:推導(dǎo)式

這個(gè)系列的文章,幾乎每篇都能看到推導(dǎo)式的身影,這一篇依舊如此。

在編碼過程中,我很喜歡使用推導(dǎo)式,在簡(jiǎn)單的應(yīng)用場(chǎng)景下,它簡(jiǎn)潔且不失高效。

如下這段代碼中,我會(huì)使用列表推導(dǎo)式得出所有會(huì)員中過于肥胖的人的 bmi 指數(shù)

members = [
    {"name": "小五", "age": 23, "height": 1.75, "weight": 72},
    {"name": "小李", "age": 17, "height": 1.72, "weight": 63},
    {"name": "小陳", "age": 20, "height": 1.78, "weight": 82},
]

count = 0

def get_bmi(info):
    global count
    count += 1

    print(f"執(zhí)行了 {count} 次")

    height = info["height"]
    weight = info["weight"]

    return weight / (height**2)

# 查出所有會(huì)員中過于肥胖的人的 bmi 指數(shù)
fat_bmis = [get_bmi(m) for m in members if get_bmi(m) > 24]

print(fat_bmis)

輸出如下

執(zhí)行了 1 次
執(zhí)行了 2 次
執(zhí)行了 3 次
執(zhí)行了 4[25.88057063502083]

可以看到,會(huì)員數(shù)只有 3 個(gè),但是 get_bmi 函數(shù)卻執(zhí)行了 4 次,原因是在判斷時(shí)執(zhí)行了 3 次,而在構(gòu)造新的列表時(shí)又重復(fù)執(zhí)行了一遍。

如果所有會(huì)員都是過于肥胖的,那最終將執(zhí)行 6 次,這種在大量的數(shù)據(jù)下是比較浪費(fèi)性能的,因此對(duì)于這種結(jié)構(gòu),我通常會(huì)使用傳統(tǒng)的for 循環(huán) + if 判斷。

fat_bmis = []

# 查出所有會(huì)員中過于肥胖的人的 bmi 指數(shù)
for m in members:
    bmi = get_bmi(m)
    if bmi > 24:
        fat_bmis.append(bmi)

在有了海象運(yùn)算符之后,你就可以不用在這種場(chǎng)景下做出妥協(xié)。

# 查出所有會(huì)員中過于肥胖的人的 bmi 指數(shù)
fat_bmis = [bmi for m in members if (bmi := get_bmi(m)) > 24]

最終從輸出結(jié)果可以看出,只執(zhí)行了 3 次

執(zhí)行了 1 次
執(zhí)行了 2 次
執(zhí)行了 3[25.88057063502083]

這里僅介紹了列表推導(dǎo)式,但在字典推導(dǎo)式和集合推導(dǎo)式中同樣適用。不再演示。

海象運(yùn)算符,是一個(gè)新奇的特性,有不少人覺得這樣這種特性會(huì)破壞代碼的可讀性。確實(shí)在一個(gè)新鮮事物剛出來時(shí)是會(huì)這樣,但我相信經(jīng)過時(shí)間的沉淀后,越來越多的人使用它并享受它帶來的便利時(shí),這種爭(zhēng)議也會(huì)慢慢消失在歷史的長(zhǎng)河中。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    578

    瀏覽量

    25215
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4825

    瀏覽量

    86225
  • 運(yùn)算符
    +關(guān)注

    關(guān)注

    0

    文章

    172

    瀏覽量

    11353
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語言中位運(yùn)算符的高級(jí)用法(1)

    在上一篇文章中,我們介紹了&運(yùn)算符的基礎(chǔ)用法,本篇文章,我們將介紹& 運(yùn)算符的一些高級(jí)用法
    發(fā)表于 08-22 10:44 ?476次閱讀
    C語言中位<b class='flag-5'>運(yùn)算符</b>的高級(jí)<b class='flag-5'>用法</b>(1)

    C語言中位運(yùn)算符的高級(jí)用法(2)

    在上一篇文章中,我們介紹了&運(yùn)算符的高級(jí)用法,本篇文章,我們將介紹| 運(yùn)算符的一些高級(jí)用法
    發(fā)表于 08-22 10:45 ?459次閱讀
    C語言中位<b class='flag-5'>運(yùn)算符</b>的高級(jí)<b class='flag-5'>用法</b>(2)

    C語言中位運(yùn)算符的高級(jí)用法(3)

    在上一篇文章中,我們介紹了|運(yùn)算符的高級(jí)用法,本篇文章,我們將介紹^ 運(yùn)算符的一些高級(jí)用法
    發(fā)表于 08-22 10:47 ?379次閱讀
    C語言中位<b class='flag-5'>運(yùn)算符</b>的高級(jí)<b class='flag-5'>用法</b>(3)

    C語言中位運(yùn)算符的高級(jí)用法(4)

    在上一篇文章中,我們介紹了^運(yùn)算符的高級(jí)用法,本篇文章,我們將介紹~ 運(yùn)算符的一些高級(jí)用法
    發(fā)表于 08-22 10:48 ?311次閱讀
    C語言中位<b class='flag-5'>運(yùn)算符</b>的高級(jí)<b class='flag-5'>用法</b>(4)

    C語言中位運(yùn)算符的高級(jí)用法(5)

    在上一篇文章中,我們介紹了~運(yùn)算符的高級(jí)用法,本篇文章,我們將介紹
    發(fā)表于 08-22 10:49 ?474次閱讀
    C語言中位<b class='flag-5'>運(yùn)算符</b>的高級(jí)<b class='flag-5'>用法</b>(5)

    2.7 python運(yùn)算符

    2.7 python運(yùn)算符0. 什么是運(yùn)算符?本章節(jié)主要說明Python運(yùn)算符。舉個(gè)簡(jiǎn)單的例子 4 +5 = 9 。 例子中,4和5被稱為
    發(fā)表于 02-21 16:43

    移位運(yùn)算符的應(yīng)用實(shí)例講解

    移位運(yùn)算符在程序設(shè)計(jì)中,是位操作運(yùn)算符的一。移位運(yùn)算符可以在二進(jìn)制的基礎(chǔ)上對(duì)數(shù)字進(jìn)行平移。按照平移的方向和填充數(shù)字的規(guī)則分為三種:(帶符號(hào)
    的頭像 發(fā)表于 11-19 07:04 ?3719次閱讀
    移位<b class='flag-5'>運(yùn)算符</b>的應(yīng)用實(shí)例講解

    干貨:大實(shí)例講解三種C++運(yùn)算符重載

    本章節(jié)主要講解是運(yùn)算符重載。運(yùn)算符重載是賦予運(yùn)算符能操作自定義類型的功能。C++運(yùn)算符重載主要分為以下類:
    的頭像 發(fā)表于 09-30 16:59 ?3669次閱讀
    干貨:<b class='flag-5'>三</b>大實(shí)例講解<b class='flag-5'>三種</b>C++<b class='flag-5'>運(yùn)算符</b>重載

    python運(yùn)算符是什么

    python運(yùn)算符 0. 什么是運(yùn)算符? 本章節(jié)主要說明Python運(yùn)算符。舉個(gè)簡(jiǎn)單的例子 4 +5 = 9 。 例子中,4和5被稱為操作
    的頭像 發(fā)表于 02-21 16:44 ?2650次閱讀

    條件(元)運(yùn)算符

    RTL建模中廣泛使用的運(yùn)算符是條件運(yùn)算符,也稱為運(yùn)算符,該運(yùn)算符用于在兩個(gè)表達(dá)式之間進(jìn)行選擇——表5-2列出了用于表示條件
    的頭像 發(fā)表于 02-09 15:42 ?1616次閱讀
    條件(<b class='flag-5'>三</b>元)<b class='flag-5'>運(yùn)算符</b>

    c語言運(yùn)算符及例題

    C語言中邏輯運(yùn)算符包含邏輯與&&、邏輯或||、邏輯非!三種。其中邏輯與&&是雙目運(yùn)算符,即需要運(yùn)算符兩邊都要有表達(dá)式,且兩邊表達(dá)式都為真,此表達(dá)式才為真;邏輯||也是雙目
    發(fā)表于 02-16 16:14 ?0次下載

    Python運(yùn)算符介紹

    : print(“a《30”) if 4 《= a 《= 30: print(“1《=a《=10”) if 4 《= a a 《= 30”) 3. 位運(yùn)算符 按位運(yùn)算符是把數(shù)字看作二進(jìn)制來進(jìn)行計(jì)算的。Python中的按位
    的頭像 發(fā)表于 03-08 17:22 ?1330次閱讀

    python運(yùn)算符優(yōu)先級(jí)順序口訣

    Python是一非常流行的編程語言,具有廣泛的應(yīng)用領(lǐng)域。在Python中,運(yùn)算符是進(jìn)行各種數(shù)學(xué)和邏輯運(yùn)算的關(guān)鍵部分。了解
    的頭像 發(fā)表于 11-22 14:34 ?3338次閱讀

    python運(yùn)算符的優(yōu)先級(jí)大小

    Python運(yùn)算符的優(yōu)先級(jí)決定了表達(dá)式中各個(gè)運(yùn)算符的計(jì)算順序。了解運(yùn)算符的優(yōu)先級(jí)對(duì)于正確理解和編寫復(fù)雜的表達(dá)式非常重要。本文將詳細(xì)介紹Python
    的頭像 發(fā)表于 11-29 16:21 ?4053次閱讀

    邏輯異或運(yùn)算符Python中的用法

    Python編程語言中,邏輯異或運(yùn)算符并不直接作為一個(gè)內(nèi)置的操作存在,因?yàn)?b class='flag-5'>Python更側(cè)重于高級(jí)編程和可讀性,并沒有直接提供異或運(yùn)算符
    的頭像 發(fā)表于 11-19 09:46 ?743次閱讀
    主站蜘蛛池模板: 免费色网址 | 成人免费淫片95视频观看网站 | 国产操女 | 97人人在线视频 | 精品亚洲午夜久久久久 | 天天爽夜夜春 | 屁股趴过来欠打高h | 免费观看黄网站 | 久久久久久国产精品免费 | 在线观看日本免费视频大片一区 | 久久99国产精品免费观看 | 欧美无限看 | 天天躁日日2018躁狠狠躁 | 性欧美1819hd | 在线免费看黄的网站 | 午夜精品在线免费观看 | 天天摸夜夜摸爽爽狠狠婷婷97 | 男女免费网站 | 调教双性学霸美人 | 亚洲天堂免费看 | 午夜一级福利 | 深夜影院一级毛片 | 真人一级一级特黄高清毛片 | 97久久天天综合色天天综合色 | 午夜69成人做爰视频网站 | 国产高清在线视频 | 国产精品久久久久久久免费大片 | 天天操天天摸天天碰 | 成人的天堂视频一区二区三区 | 色色色色色色网 | 国产性大片黄在线观看在线放 | 丁香五月缴情在线 | 狠狠的干狠狠的操 | 欧美色网络 | 免费网站在线视频美女被 | 欧美午夜精品一区二区三区 | 久久婷婷激情综合色综合也去 | 免费香蕉视频国产在线看 | 免费一看一级毛片 | 100000免费啪啪18免进 | 亚洲一区二区三区电影 |