Python海象运算符:=的具体实现

 更新时间:2025年11月30日 10:00:39   作者:XerCis  
海象运算符又称​​赋值表达式,Python3.8后可用,其核心设计是在表达式内部完成变量赋值并返回该值,从而简化代码逻辑,下面就来详细的介绍一下如何使用,感兴趣的可以了解一下

简介

海象运算符 :=,又称​​赋值表达式​​(Assignment Expression),Python 3.8 后可用PEP 572 引入,其核心设计是在表达式内部完成变量赋值并返回该值,从而简化代码逻辑。

正常赋值语句是 a=b,读作“a等于b”,而海象赋值语句是 a:=b,读作“a walrus /ˈwɔːlrəs/ b”,因为 := 看起来像海象的眼睛和牙齿。

海象运算符优先级低于比较操作,需用括号明确边界

​​条件判断优化

import datetime

person = {'name': 'Alice', 'birthyear': 1997}
currentyear = datetime.datetime.now().year

if birthyear := person.get('birthyear'):
    print(f'{currentyear - birthyear} years old')

# 传统写法
if person.get('birthyear'):
    birthyear = person['birthyear']  # 调多一次
    print(f'{currentyear - birthyear} years old')

避免重复计算,提升可读性

循环控制简化​

with open('requirements.txt', encoding='utf-8') as f:
    while line := f.readline():
        print(line)

# 传统写法
with open('requirements.txt', encoding='utf-8') as f:
    while True:
        line = f.readline()
        if not line:
            break
        print(line)

推导式高效计算​

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

squares = [squared for num in numbers if (squared := num ** 2) > 10]  # 计算平方值大于10的结果
print(squares)

# 传统写法
squares = [num ** 2 for num in numbers if num ** 2 > 10]
print(squares)

正则匹配与数据提取​

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}')

# 传统写法
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万个随机整数,计算平方值并筛选大于2500的元素
data = [random.randint(1, 100) for _ in range(100000)]


def traditional_method():
    """传统写法"""
    return [x ** 2 for x in data if x ** 2 > 2500]


def walrus_method():
    """海象运算符写法"""
    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'传统写法耗时: {traditional_time:.4f} 秒')
print(f'海象运算符耗时: {walrus_time:.4f} 秒')
print(f'性能提升: {((traditional_time - walrus_time) / traditional_time) * 100:.2f}%')
# 传统写法耗时: 2.0772 秒
# 海象运算符耗时: 1.5260 秒
# 性能提升: 26.53%

到此这篇关于Python海象运算符:=的具体实现的文章就介绍到这了,更多相关Python海象运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Pandas的三大利器(map,apply,applymap)

    详解Pandas的三大利器(map,apply,applymap)

    这篇文章主要为大家介绍了pandas中的三大利器: map、apply、applymap,他们经常在进行数据处理的时候用到,需要的可以参考一下
    2022-02-02
  • Python实现矩阵可视化的示例代码

    Python实现矩阵可视化的示例代码

    matplotlib中提供了两个矩阵可视化函数,分别是imshow和matshow,本文主要为大家详细介绍了如何使用这两个函数,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • 使用Keras预训练好的模型进行目标类别预测详解

    使用Keras预训练好的模型进行目标类别预测详解

    这篇文章主要介绍了使用Keras预训练好的模型进行目标类别预测详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 简化Python浏览器自动化的三种模式

    简化Python浏览器自动化的三种模式

    在如今的网络数据处理与自动化任务中,浏览器自动化已成为不可或缺的技术,为了便于 Python 开发者更高效地进行网页操作,DrissionPage 提供了一种轻量级且功能强大的解决方案,本文将深入解读 DrissionPage 的三种核心模式,需要的朋友可以参考下
    2025-03-03
  • Python实现对excel文件列表值进行统计的方法

    Python实现对excel文件列表值进行统计的方法

    这篇文章主要介绍了Python实现对excel文件列表值进行统计的方法,涉及Python基于win32com组件操作表格文件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 解析Python 偏函数用法全方位实现

    解析Python 偏函数用法全方位实现

    这篇文章主要介绍了解析Python 偏函数用法全方位实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • 关于如何使用python的logging库

    关于如何使用python的logging库

    这篇文章主要介绍了关于如何使用python的logging库,logging是Python标准库中用于记录日志的模块。它提供了一种简单但灵活的方法来记录程序中的事件,以便稍后进行调试和分析,需要的朋友可以参考下
    2023-04-04
  • python函数之任意数量的实参方式

    python函数之任意数量的实参方式

    这篇文章主要介绍了python函数之任意数量的实参方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 6个实用的Python自动化脚本详解

    6个实用的Python自动化脚本详解

    每天你都可能会执行许多重复的任务,例如阅读 pdf、播放音乐、查看天气、打开书签、清理文件夹等等,使用自动化脚本,就无需手动一次又一次地完成这些任务,非常方便。快跟随小编一起试一试吧
    2022-01-01
  • 5分钟快速掌握Python定时任务框架的实现

    5分钟快速掌握Python定时任务框架的实现

    这篇文章主要介绍了5分钟快速掌握 Python 定时任务框架,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论