Python海象運(yùn)算符:=的具體實現(xiàn)
簡介
海象運(yùn)算符 :=,又稱??賦值表達(dá)式??(Assignment Expression),Python 3.8 后可用,PEP 572 引入,其核心設(shè)計是在表達(dá)式內(nèi)部完成變量賦值并返回該值,從而簡化代碼邏輯。
正常賦值語句是 a=b,讀作“a等于b”,而海象賦值語句是 a:=b,讀作“a walrus /?w??lr?s/ b”,因為 := 看起來像海象的眼睛和牙齒。
海象運(yùn)算符優(yōu)先級低于比較操作,需用括號明確邊界
??條件判斷優(yōu)化
import datetime
person = {'name': 'Alice', 'birthyear': 1997}
currentyear = datetime.datetime.now().year
if birthyear := person.get('birthyear'):
print(f'{currentyear - birthyear} years old')
# 傳統(tǒng)寫法
if person.get('birthyear'):
birthyear = person['birthyear'] # 調(diào)多一次
print(f'{currentyear - birthyear} years old')
避免重復(fù)計算,提升可讀性
循環(huán)控制簡化?
with open('requirements.txt', encoding='utf-8') as f:
while line := f.readline():
print(line)
# 傳統(tǒng)寫法
with open('requirements.txt', encoding='utf-8') as f:
while True:
line = f.readline()
if not line:
break
print(line)
推導(dǎo)式高效計算?
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] squares = [squared for num in numbers if (squared := num ** 2) > 10] # 計算平方值大于10的結(jié)果 print(squares) # 傳統(tǒng)寫法 squares = [num ** 2 for num in numbers if num ** 2 > 10] print(squares)
正則匹配與數(shù)據(jù)提取?
import re
text = 'Date: 2023-10-05'
if (match := re.search(r'(\d{4})-(\d{2})-(\d{2})', text)):
year, month, day = match.groups()
print(f'{year}-{month}-{day}')
# 傳統(tǒng)寫法
match = re.search(r'(\d{4})-(\d{2})-(\d{2})', text)
if match:
year, month, day = match.groups()
print(f'{year}-{month}-{day}')
性能對比
import timeit
import random
# 10萬個隨機(jī)整數(shù),計算平方值并篩選大于2500的元素
data = [random.randint(1, 100) for _ in range(100000)]
def traditional_method():
"""傳統(tǒng)寫法"""
return [x ** 2 for x in data if x ** 2 > 2500]
def walrus_method():
"""海象運(yùn)算符寫法"""
return [sq for x in data if (sq := x ** 2) > 2500]
traditional_time = timeit.timeit(traditional_method, number=100)
walrus_time = timeit.timeit(walrus_method, number=100)
print(f'傳統(tǒng)寫法耗時: {traditional_time:.4f} 秒')
print(f'海象運(yùn)算符耗時: {walrus_time:.4f} 秒')
print(f'性能提升: {((traditional_time - walrus_time) / traditional_time) * 100:.2f}%')
# 傳統(tǒng)寫法耗時: 2.0772 秒
# 海象運(yùn)算符耗時: 1.5260 秒
# 性能提升: 26.53%
到此這篇關(guān)于Python海象運(yùn)算符:=的具體實現(xiàn)的文章就介紹到這了,更多相關(guān)Python海象運(yùn)算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Pandas的三大利器(map,apply,applymap)
這篇文章主要為大家介紹了pandas中的三大利器: map、apply、applymap,他們經(jīng)常在進(jìn)行數(shù)據(jù)處理的時候用到,需要的可以參考一下2022-02-02
使用Keras預(yù)訓(xùn)練好的模型進(jìn)行目標(biāo)類別預(yù)測詳解
這篇文章主要介紹了使用Keras預(yù)訓(xùn)練好的模型進(jìn)行目標(biāo)類別預(yù)測詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python實現(xiàn)對excel文件列表值進(jìn)行統(tǒng)計的方法
這篇文章主要介紹了Python實現(xiàn)對excel文件列表值進(jìn)行統(tǒng)計的方法,涉及Python基于win32com組件操作表格文件的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07
解析Python 偏函數(shù)用法全方位實現(xiàn)
這篇文章主要介紹了解析Python 偏函數(shù)用法全方位實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
5分鐘快速掌握Python定時任務(wù)框架的實現(xiàn)
這篇文章主要介紹了5分鐘快速掌握 Python 定時任務(wù)框架,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

