Python海象运算符的用法教程

 更新时间:2022年07月05日 10:05:31   作者:派森酱  
Python 海象运算符是在 PEP 572 中提出,并在 Python3.8 版本并入和发布。本文就来为大家详细讲讲Python海象运算符的用法,感兴趣的可以了解一下

前言

大家好,我是闲欢,你们的老相识呀!

海象可谓是最大的哺乳动物了,有人称它是北半球的“土著”居民。它圆头,短而阔的嘴巴,粗大的鼻子,上犬齿形成长达40厘米-90厘米的獠牙,每只4公斤以上。雄海象体长可达4米,重2吨。海象喜群居,数千头簇拥在一起。

海象两眼眯得像缺乏活力的老头子,它们爱睡懒觉,一生中大多时间是躺在冰上度过的,还能在水里睡觉,真是牛出天际。

作为996的卷农,我非常羡慕它们的生活,好想跟他们一样躺平。

好了,言归正传,咱们继续卷吧!今天给大家带来了一个以海象命名的运算符——海象运算符。

Python 海象运算符是在 PEP 572 中提出,并在 Python3.8 版本并入和发布。

海象运算符的英文原名叫 Assignment Expresions ,即 赋值表达式。海象表达式由一个 : 和 一个 = 组成,即 := 。我们一般称作 walrus operator(海象运算符),因为它看起来就是一个海象旋转 90° 而成。作者还是很有想象力的,这都能联系起来!

语法

海象运算符的语法格式是:

(variable_name := expression)

这是一个新的赋值运算符,跟我们常见的 = 类似,一个变量名后面跟一个表达式。

用法

用于 if-else 条件表达式

常规写法:

a = 5
if a > 1:
    print('do sth!')

升级写法:

if a := 5 > 1:
    print('do sth!')

用于 while 循环

常规写法:

n = 3
while n:
    print('do sth!')
    n -= 1

升级写法:

n = 3
while (n := n - 1) + 1: 
    print('do sth!')

这里加1是因为执行输出前n就减1了。

读取文件

常规写法:

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())

在合适的场景中使用海象运算符可以降低程序复杂性,简化代码,甚至可以提高程序的性能。

不适用场景

虽然海象运算符好用,但也不是所有场景都能用,还是有它的局限性的。

变量赋值

我们不能将 = 运算符与 := 运算符一起使用,海象运算符只能是表达式的一部分:

a = 5 # Valid 
a := 5 # InValid 
empty_list = [] # Valid 
empty_list := [] # InValid 

如果你这样写,编辑器会直接提示错误。

加减法

a += 5 # Valid
a :+=5 # Invalid 

Lambda函数中的赋值表达式

(lambda: a:= 5) # Invalid
lambda: (a := 5) # Valid, but not useful
(var := lambda: 5) # Valid

争议

关键字

海象运算符使用 := 这个关键字,是大多数开发人员都不太喜欢的,这个关键字跟我们平时接触到的都不一样,创造者独辟蹊径。

我也不太喜欢这个,但是也尊重创造者的规则,毕竟人家给大家带来这么实用的运算符。

运算符名称

一些开发人员认为“海象运算符”这个名称太抽象了,不能清晰地表达出这个运算符的含义,几乎百分之百的人第一次看到这个名称,不会想到它的功能。

欢哥以为,既然没有一套规定的命名方法,作者取个有意义的名字也无可厚非吧。

总结

从此以后,我们的武器库中又多了一件常规武器,大家在打仗(卷别人)时,不要忘了使用,对程序的性能和代码简洁性都会有提升。

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

相关文章

  • 解析Python中的异常处理

    解析Python中的异常处理

    这篇文章主要介绍了解析Python中的异常处理,异常处理是学习每门编程语言都必须掌握的重要知识,本文代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04
  • Python列表list解析操作示例【整数操作、字符操作、矩阵操作】

    Python列表list解析操作示例【整数操作、字符操作、矩阵操作】

    这篇文章主要介绍了Python列表list解析操作,结合实例形式分析了Python列表针对整数、字符及矩阵的解析操作实现技巧,需要的朋友可以参考下
    2017-07-07
  • 改变 Python 中线程执行顺序的方法

    改变 Python 中线程执行顺序的方法

    这篇文章主要介绍了改变 Python 中线程的执行顺序的方法,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-09-09
  • Python 实现中值滤波、均值滤波的方法

    Python 实现中值滤波、均值滤波的方法

    今天小编就为大家分享一篇Python 实现中值滤波、均值滤波的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python中os模块详解

    python中os模块详解

    os模块提供了多数操作系统的功能接口函数.当os模块被导入后,它会自适应于不同的操作系统平台,如posix或NT系统平台,os模块会根据不同的平台进行相应的操作.本节内容将对os模块提供的函数进行详细的解读.
    2016-10-10
  • 详解Django中的过滤器

    详解Django中的过滤器

    这篇文章主要介绍了Django中的过滤器,Django是重多高人气Python框架中最为著名的一个,需要的朋友可以参考下
    2015-07-07
  • python从ftp下载数据保存实例

    python从ftp下载数据保存实例

    这篇文章主要介绍了python从ftp下载数据到本地保存的实例代码方法,大家参考使用吧
    2013-11-11
  • python根据出生年份简单计算生肖的方法

    python根据出生年份简单计算生肖的方法

    这篇文章主要介绍了python根据出生年份简单计算生肖的方法,通过一个非常简单的自定义函数实现输入年份得到生肖的功能,非常实用,需要的朋友可以参考下
    2015-03-03
  • 一招教你搞定Pycharm无法下载汉化包问题

    一招教你搞定Pycharm无法下载汉化包问题

    最近需要用到自然语言处理工具,python提供了很多自带的工具包,下面这篇文章主要给大家介绍了关于Pycharm无法下载汉化包问题的解决办法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • django实现后台显示媒体文件

    django实现后台显示媒体文件

    这篇文章主要介绍了django实现后台显示媒体文件,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论