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

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

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

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

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

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

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

1. 第一個用法:if/else

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

在 Golang 中的條件語句可以直接在 if 中運算變量的獲取后直接對這個變量進行判斷,可以讓你少寫一行代碼

import "fmt"

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

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

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

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

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

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)寫法更為驚艷

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

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

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

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

3. 第三個用法:推導式

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

在編碼過程中,我很喜歡使用推導式,在簡單的應用場景下,它簡潔且不失高效。

如下這段代碼中,我會使用列表推導式得出所有會員中過于肥胖的人的 bmi 指數

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 指數
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]

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

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

fat_bmis = []

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

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

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

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

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

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

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

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

相關文章

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

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

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

    Python如何讀寫二進制數組數據

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

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

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

    python實現跳表SkipList的示例代碼

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

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

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

    Python3 webservice接口測試代碼詳解

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

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

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

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

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

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

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

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

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

最新評論