Python海象运算符超详细讲解

 更新时间:2023年01月30日 09:24:26   作者:小嗷犬  
海象运算符的英文原名叫Assignment Expresions,翻译过来也就是赋值表达式,不过现在大家更普遍地称之为海象运算符,就是因为它长得真的太像海象了

介绍

海象运算符,即 := ,在 PEP 572 中被提出,并在 Python3.8 版本中发布。

海象运算符的英文原名叫Assignment Expresions,即赋值表达式。

它由一个冒号:和一个等号=组成,即:=。而它被称作walrus operator(海象运算符),是因为它长得像一只海象。

语法

海象运算符的语法格式如下:

variable_name := expression

它的作用是将表达式的值赋值给变量,然后返回表达式的值。

而传统的赋值运算符=在赋值之后,返回的是None

用法

海象运算符返回的是表达式的值,而不是None,因此可以用于一些需要表达式的地方。

if 语句

使用海象运算符:

if (n := len(a)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

传统写法:

n = len(a)
if n > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

while 循环

while 循环逐行读取文件

使用海象运算符:

while (line := f.readline()) != "":
    print(line, end="")

传统写法:

line = f.readline()
while line != "":
    print(line, end="")
    line = f.readline()

while 循环验证输入

使用海象运算符:

while (user_input := input("Enter something: ")) != "quit":
    print(f"You entered {user_input}")

传统写法:

user_input = input("Enter something: ")
while user_input != "quit":
    print(f"You entered {user_input}")
    user_input = input("Enter something: ")

推导式

使用海象运算符:

nums = [18, 29, 31, 37, 41, 59, 61, 73, 79, 83, 97]
cnt = 0
def f(x):
    global cnt
    cnt += 1
    return int(x ** 0.5)
print([y for x in nums if (y := f(x)) > 7])
print(cnt)
# 输出:
# [8, 8, 9, 9]
# 11

传统写法:

nums = [18, 29, 31, 37, 41, 59, 61, 73, 79, 83, 97]
cnt = 0
def f(x):
    global cnt
    cnt += 1
    return int(x ** 0.5)
print([f(x) for x in nums if f(x) > 7])
print(cnt)
# 输出:
# [8, 8, 9, 9]
# 15

可以看出,在上面那种情况下,使用海象运算符可以减少函数的调用次数。

当数据量大时,这种差别就会更加明显。

三元表达式

使用海象运算符:

money, spend = 2000, 1500
print(f"你还有{money}元" if (money := money - spend) > 1000 else "你只有{money}元了")

传统写法:

money, spend = 2000, 1500
money = money - spend
print(f"你还有{money}元" if money > 1000 else f"你只有{money}元了")

总结

综上所述,海象运算符可以用于一些需要表达式的地方,比如if语句、while循环、推导式、三元表达式等。

它一定程度上减少了代码的行数,使代码更加简洁,甚至在某些情况下可以提高程序的效率;但通常情况下,使用海象运算符会降低代码的可读性,使代码更难以理解。

因此,使用海象运算符时,应该考虑清楚,是否真的需要使用它。

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

相关文章

  • OpenCV-Python实现油画效果的实例

    OpenCV-Python实现油画效果的实例

    OpenCV是功能强大的计算机视觉库,本文主要使用OpenCV来实现图片的油画效果,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • 浅析Python中的多条件排序实现

    浅析Python中的多条件排序实现

    Python中使用sort方法和sorted函数排序时关键就在于key参数值的编写技巧,这里我们来举两个实例浅析Python中的多条件排序实现:
    2016-06-06
  • python中filter,map,reduce的作用

    python中filter,map,reduce的作用

    这篇文章主要介绍了python中filter,map,reduce的作用,文章首先通过map函数展开,map主要作用是计算一个序列或者多个序列进行函数映射之后的值,感兴趣的朋友可以参考一下
    2022-06-06
  • Python多线程编程(七):使用Condition实现复杂同步

    Python多线程编程(七):使用Condition实现复杂同步

    这篇文章主要介绍了Python多线程编程(七):使用Condition实现复杂同步,本文讲解通过很著名的“生产者-消费者”模型来来演示在Python中使用Condition实现复杂同步,需要的朋友可以参考下
    2015-04-04
  • python 一个figure上显示多个图像的实例

    python 一个figure上显示多个图像的实例

    今天小编就为大家分享一篇python 一个figure上显示多个图像的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python JSON模块的使用详情

    Python JSON模块的使用详情

    这篇文章主要介绍了Python JSON模块的使用详情,JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写下面文章围绕Python JSON模块的相关资料展开内容,需要的小伙伴可以参考一下,希望 对你有所帮助
    2021-12-12
  • Pytorch学习笔记DCGAN极简入门教程

    Pytorch学习笔记DCGAN极简入门教程

    网上GAN的教程太多了,这边也谈一下自己的理解,本文给大家介绍一下GAN的两部分组成,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • Python 中使用 Selenium 单击网页按钮功能

    Python 中使用 Selenium 单击网页按钮功能

    Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器,本篇文章将介绍如何在 Python 中使用 selenium 单击网页上的按钮,感兴趣的朋友一起看看吧
    2023-11-11
  • python字符串常用方法及文件简单读写的操作方法

    python字符串常用方法及文件简单读写的操作方法

    字符串(sting)是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符。本文给大家介绍python字符串常用方法及文件简单读写的操作方法,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-03-03
  • Python pyasn库解析和生成ASN.1数据结构

    Python pyasn库解析和生成ASN.1数据结构

    这篇文章主要介绍了Python pyasn库实现ASN.1数据结构的解析和生成实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01

最新评论