首页 > 编程语言 >Python 语法 - 海象运算符:=

Python 语法 - 海象运算符:=

时间:2024-07-02 22:11:07浏览次数:1  
标签:---- 调用 海象 Python 运算符 while print

前言

海象运算符的英文原名叫 Assignment Expresions ,即 赋值表达式。是Python 3.8新增的语法 :=,在 PEP 572 中提出。
海象运算符之所以叫这个名字是因为这个符号就像是一个海象逆时针90°倒过来一样,符号为一个冒号接着一个等号,是:=这样的。

用于条件表达式

海象运算符由一个 : 和 一个 = 组成,即:= ,可在表达式内部为变量赋值。
通常一个条件表达式我们会这样写

a = 15
if a > 10:
    print('hello, walrus operator!')

使用海象运算符后

if a := 15 > 10:
    print('hello, walrus operator!')

使用赋值表达式,避免len(a)被调用2次

a = "hello world"
n = len(a)
if n > 10:
    print(f'a的长度{n}')

使用海象运算符

a = "hello world"
if (n := len(a)) > 10:
    print(f'a的长度{n}')

注意if后面的 海象运算符需用圆括号包起来,否则运算结果不一样。

用于 while 循环

1.n 次循环的一般写法:

n = 5
while n:
    print(f"循环执行,n->{n}")
    n -= 1

使用海象运算符

n = 5
while (n := n - 1) + 1:
    print(f"循环执行,n->{n}")

while 后面需加1,因为赋值的时候就直接-1了。

2.实现一个密码输入检验的一般写法:

while True:
    psw = input("请输入密码:")
    if psw == "123":
        break

更优雅的实现方式:海象运算符。

while (psw := input("请输入密码:")) != "123":
    continue

3.读取一个文件的每一行并输出:

fp = open("test.txt", "r")
while True:
    line = fp.readline()
    if not line:
        break
    print(line.strip())
fp.close()

更优雅的实现方式:海象运算符

fp = open("test.txt", "r")
while line := fp.readline():
    print(line.strip())

4.适用于配合 while 循环计算一个值来检测循环是否终止,而同一个值又在循环体中再次被使用的情况:

# Loop over fixed length blocks 
while True:
    block = f.read(256)
    if block != '':
        process(block)
    else:
        break

使用海象运算符

# Loop over fixed length blocks 
while (block := f.read(256)) != '': 
    process(block)

列表推导式

在列表推导式中调用一个函数

nums = ["22", "hello", "world", "上海-悠悠"]


def f(x):
    print("函数被调用了----")
    return len(x)


print([f(x) for x in nums if f(x) > 2])

运行结果

函数被调用了----
函数被调用了----
函数被调用了----
函数被调用了----
函数被调用了----
函数被调用了----
函数被调用了----
[5, 5, 5]

使用海象运算符

nums = ["22", "hello", "world", "上海-悠悠"]


def f(x):
    print("函数被调用了----")
    return len(x)


print([n for x in nums if (n := f(x)) > 2])

运行结果

函数被调用了----
函数被调用了----
函数被调用了----
函数被调用了----
[5, 5, 5]

这样可以减少f(x)函数被调用的次数。

三元表达式

普通写法

x, y = 200, 150
x = x - y
msg = f"余额{x}元" if x > 100 else f"只有{x}元"
print(msg)

使用海象运算符

x, y = 200, 150

msg = f"余额{x}元" if (x := x - y) > 100 else f"只有{x}元"
print(msg)

总结:海象运算符可以用于一些需要表达式的地方,比如if语句、while循环、推导式、三元表达式等。
它一定程度上减少了代码的行数,使代码更加简洁,甚至在某些情况下可以提高程序的效率;但通常情况下,使用海象运算符会降低代码的可读性,使代码更难以理解。

标签:----,调用,海象,Python,运算符,while,print
From: https://www.cnblogs.com/yoyoketang/p/18280627

相关文章

  • Python即学即用教程-第8章 异常
    Python即学即用教程-第8章异常......
  • 可视化 Python 打包 exe,这个神器绝了!
    在Python开发中,如何将脚本打包成独立的可执行文件,是许多开发者面临的挑战。特别是在需要将应用程序分发给不具备Python环境的用户时,打包工具显得尤为重要。auto-py-to-exe作为一款强大的Python打包工具,为开发者提供了简便快捷的解决方案。那么,auto-py-to-exe究竟是如何简化打包流......
  • Python基础入门知识
    目录引言      简要介绍Python语言      为什么要学习Python      Python的应用领域Python安装和环境配置      Python的下载和安装(Windows,macOS,Linux)      配置Python环境变量      安装和使用IDE(如PyCharm,VSCode)Python......
  • Linux—— 逻辑运算符,压缩和解压缩
     --a:and逻辑与  --o:or逻辑或  --not:not逻辑非  -优先级:与>或>非```shell[root@server~]#find / -size +10k -a -size -50k[root@server~]#find /etc  -name "e*" -o -name "f*"[root@server~]#find /etc  -nam......
  • Advanced Data Analytics Using Python_ With Machine Learning, Deep Learning and N
    本书提供了使用Python进行高级数据分析的方法,涵盖了机器学习、深度学习和自然语言处理的应用实例。书中详细讲解了如何在不同的数据库环境中进行数据提取、转换和加载(ETL),并探讨了监督学习、无监督学习、深度学习、时间序列分析以及大规模数据分析的相关内容。目录简介为......
  • python+flask计算机毕业设计的家庭收支记账管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会的快速发展和人们生活水平的提高,家庭财务管理变得越来越重要。然而,传统的家庭记账方式往往存在效率低下、易出错、不易统计等问题......
  • python+flask计算机毕业设计的建材店库存管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着经济的迅速发展和建筑行业的蓬勃兴起,建材市场的竞争日益激烈。建材店作为建筑行业的重要供应链环节,其库存管理水平直接影响着店铺的运......
  • python+flask计算机毕业设计的礼服租赁管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着人们对个性化、时尚化需求的日益增长,礼服租赁市场逐渐崭露头角。然而,传统的礼服租赁管理方式往往依赖于纸质记录和人工操作,这种方式不......
  • python: create Envircomnet in vscode 创建虚拟机
    先配置python开发环境 1.在搜索栏输入“>"或是用快后键ctrl+shift+P键就会显示”>",再输入"python:"   选择已经安装好的python的版本至当前项目中   2terminal下输入相关命令行操作,选进入虚拟机的的文件夹下cd.venv/scripts再进行激活虚拟机。输入ac......
  • 基于Python实现的简单电影推荐
    ⚠申明:未经许可,禁止以任何形式转载,若要引用,请标注链接地址。全文共计5071字,阅读大概需要10分钟......