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

Python開發(fā)技巧之海象運算符的三種運用方式

 更新時間:2021年10月25日 11:15:20   作者:寫代碼的明哥  
這篇文章主要介紹了Python開發(fā)技巧之海象運算符的三種運用方式,海象運算符是在 PEP 572 被提出的,直到 3.8 版本合入發(fā)布,感興趣的同學(xué)可以參考學(xué)習(xí)下

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

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

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

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

1. 第一個用法:if/else

可能有朋友是第一次接觸這個新特性,所以還是簡單的介紹一下這個海象運算符有什么用?

在 Golang 中的條件語句可以直接在 if 中運算變量的獲取后直接對這個變量進(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)成年了")

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

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

2. 第二個用法:while

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

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

但有了海象運算符之后,你可以這樣

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

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

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

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

有了海象運算符之后,這樣子寫更為舒服

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

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

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

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

如下這段代碼中,我會使用列表推導(dǎo)式得出所有會員中過于肥胖的人的 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)

# 查出所有會員中過于肥胖的人的 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]

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

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

fat_bmis = []

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

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

# 查出所有會員中過于肥胖的人的 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)式中同樣適用。不再演示。

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

以上就是Python開發(fā)技巧之海象運算符的三種運用方式的詳細(xì)內(nèi)容,更多關(guān)于海象運算符的運用方式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python 安全地刪除列表元素的方法

    python 安全地刪除列表元素的方法

    這篇文章主要介紹了python 安全地刪除列表元素的方法,分享的方法有 創(chuàng)建新列表,過濾元素和列表副本上迭代,下面相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-03-03
  • Python如何讀寫二進(jìn)制數(shù)組數(shù)據(jù)

    Python如何讀寫二進(jìn)制數(shù)組數(shù)據(jù)

    這篇文章主要介紹了Python如何讀寫二進(jìn)制數(shù)組數(shù)據(jù),文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • Python中查找缺失值的三種方法

    Python中查找缺失值的三種方法

    本文主要介紹了Python中查找缺失值的三種方法,包括pandas庫的isnull()方法、numpy庫的isnan()方法和scikit-learn庫的SimpleImputer類,感興趣的可以了解一下
    2023-11-11
  • python實現(xiàn)跳表SkipList的示例代碼

    python實現(xiàn)跳表SkipList的示例代碼

    這篇文章主要介紹了python實現(xiàn)跳表SkipList的示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • 解決vscode python print 輸出窗口中文亂碼的問題

    解決vscode python print 輸出窗口中文亂碼的問題

    今天小編就為大家分享一篇解決vscode python print 輸出窗口中文亂碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python3 webservice接口測試代碼詳解

    Python3 webservice接口測試代碼詳解

    這篇文章主要介紹了Python3 webservice接口測試代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Python selenium 三種等待方式詳解(必會)

    Python selenium 三種等待方式詳解(必會)

    這篇文章主要介紹了Python selenium 三種等待方式詳解(必會)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • Python監(jiān)聽剪切板實現(xiàn)方法代碼實例

    Python監(jiān)聽剪切板實現(xiàn)方法代碼實例

    這篇文章主要介紹了Python監(jiān)聽剪切板實現(xiàn)方法代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Python爬蟲破解登陸嗶哩嗶哩的方法

    Python爬蟲破解登陸嗶哩嗶哩的方法

    這篇文章主要介紹了Python爬蟲破解登陸嗶哩嗶哩的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python設(shè)計模式之觀察者模式原理與用法詳解

    Python設(shè)計模式之觀察者模式原理與用法詳解

    這篇文章主要介紹了Python設(shè)計模式之觀察者模式,簡單講述了觀察者模式的概念、原理并結(jié)合實例形式分析了Python實現(xiàn)與使用方法,需要的朋友可以參考下
    2019-01-01

最新評論