Python海象运算符的用法教程

目录
  • 前言
  • 语法
  • 用法
    • 用于 if-else 条件表达式
    • 用于 while 循环
    • 读取文件
  • 不适用场景
    • 变量赋值
    • 加减法
    • Lambda函数中的赋值表达式
  • 争议
    • 关键字
    • 运算符名称
  • 总结

前言

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

海象可谓是最大的哺乳动物了,有人称它是北半球的“土著”居民。它圆头,短而阔的嘴巴,粗大的鼻子,上犬齿形成长达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海象运算符内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 浅析PEP572: 海象运算符

    现在已经是Python 3.8的最后一个alpha版本,接着就是本月底要发布的的3.8.0 beta 1了.按规定,3.8已经不会再添加(修改)功能了,之前非常有争议的PEP 572的实现已经算是很固定了,我们这篇文章就来先尝个鲜.看看这个新的赋值表达式语法怎么用,何时用. 海象运算符 PEP572的标题是「Assignment Expressions」,也就是「赋值表达式」,也叫做「命名表达式」,不过它现在被广泛的别名是「海象运算符」(The Walrus Operator).因为:=很像海象

  • Python开发技巧之海象运算符的三种运用方式

    目录 1. 第一个用法:if/else 2. 第二个用法:while 3. 第三个用法:推导式 Python 版本发展非常快,如今最新的版本已经是 Pyhton 3.9,即便如此,有很多人甚至还停留在 3.6 或者 3.7,连 3.8 还没用上. 很多 Python 3.8 的特性还没来得及了解,就已经成为旧知识了,比如今天要说的海象运算符. 海象运算符是在 PEP 572 被提出的,直到 3.8 版本合入发布. 它的英文原名叫 Assignment Expressions,翻译过来也就是 赋值

  • Python 海象运算符( :=)的三种用法

    目录 前言 While 循环 列表理解 处理返回的数据 总结 前言 随着Python 3.8的发布,赋值表达式运算符(也称为海象运算符)也发布了.运算符使值的赋值可以传递到表达式中.这通常会使语句数减少一个. 例如: my_list = [1,2,3] count = len(my_list) if count > 3: print(f"Error, {count} is too many items") # when converting to walrus operator.

  • Python海象运算符的用法教程

    目录 前言 语法 用法 用于 if-else 条件表达式 用于 while 循环 读取文件 不适用场景 变量赋值 加减法 Lambda函数中的赋值表达式 争议 关键字 运算符名称 总结 前言 大家好,我是闲欢,你们的老相识呀! 海象可谓是最大的哺乳动物了,有人称它是北半球的“土著”居民.它圆头,短而阔的嘴巴,粗大的鼻子,上犬齿形成长达40厘米-90厘米的獠牙,每只4公斤以上.雄海象体长可达4米,重2吨.海象喜群居,数千头簇拥在一起. 海象两眼眯得像缺乏活力的老头子,它们爱睡懒觉,一生中大多时间是

  • Python海象运算符超详细讲解

    目录 介绍 语法 用法 if 语句 while 循环 while 循环逐行读取文件 while 循环验证输入 推导式 三元表达式 总结 介绍 海象运算符,即 := ,在 PEP 572 中被提出,并在 Python3.8 版本中发布. 海象运算符的英文原名叫Assignment Expresions,即赋值表达式. 它由一个冒号:和一个等号=组成,即:=.而它被称作walrus operator(海象运算符),是因为它长得像一只海象. 语法 海象运算符的语法格式如下: variable_name

  • python常见运算符及用法小结

    目录 算术运算符 关系运算符 逻辑运算符 成员运算符 身份运算符 三目运算符 运算符优先级 算术运算符 运算符 描述 + 两个数相加两个数相加,或是字符串连接 - 两个数相减 * 两个数相乘,或是返回一个重复若干次的字符串 / 两个数相除,结果为浮点数 % 取模,返回两个数相除的余数 // 两个数相除,返回商的整数部分 ** 幂运算,返回乘方结果 print(1 + 2) # 3 print(2 - 1) # 1 print(2 * 3) # 6 print(3 / 2) # 1.5 print

  • Python中字典与恒等运算符的用法分析

    本文实例讲述了Python中字典与恒等运算符的用法.分享给大家供大家参考,具体如下: 字典 字典是可变数据类型,其中存储的是唯一键到值的映射. elements = {"hydrogen": 1, "helium": 2, "carbon": 6} 字典的键可以是任何不可变类型,例如整数或元组,而不仅仅是字符串.甚至每个键都不一定要是相同的类型! print(elements["helium"]) # 2 我们可以使用方括号并

  • Python Numpy库常见用法入门教程

    本文实例讲述了Python Numpy库常见用法.分享给大家供大家参考,具体如下: 1.简介 Numpy是一个常用的Python科学技术库,通过它可以快速对数组进行操作,包括形状操作.排序.选择.输入输出.离散傅立叶变换.基本线性代数,基本统计运算和随机模拟等.许多Python库和科学计算的软件包都使用Numpy数组作为操作对象,或者将传入的Python数组转化为Numpy数组,因此在Python中操作数据离不开Numpy. Numpy的核心是ndarray对象,由Python的n维数组封装而来

  • Python运算符重载用法实例分析

    本文实例讲述了Python运算符重载用法.分享给大家供大家参考.具体如下: 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调用的方法如下: Method         Overloads         Call for __init__        构造函数         X=Class() __del__         析构函数         对象销毁 __add__         +                 X+Y,X+=Y __

  • Python运算符重载用法实例

    本文实例讲述了Python运算符重载用法.分享给大家供大家参考.具体分析如下: python中,我们在定义类的时候,可以通过实现一些函数来实现重载运算符. 例子如下: # -*- coding:utf-8 -*- ''''' Created on 2013-3-21 @author: naughty ''' class Test(object): def __init__(self, value): self.value = value def __add__(self, x): return

  • python not运算符的实例用法

    说明 1.not逻辑非,可以对符号右侧的值进行非运算. 2.对于布尔值,非运算会对其进行取反操作,True变False,False变True. 对于非布尔值,非运算会先将其转换为布尔值,然后再取反. 空性值为False,其他为True. 实例 a = True # 如果表达式不赋值.不会对变量a有任何影响, # 只是创建了一个新对象存储了结果, # 同数据类型转换所讲的 not a # 对变量a赋值之后,表达是结果才影响变量a. a = not a print(f"a = {a}")

随机推荐