首页 > 其他分享 >3.8新特性——海象运算符

3.8新特性——海象运算符

时间:2024-02-05 17:55:45浏览次数:32  
标签:海象 money 运算符 表达式 print line 3.8

海象运算符

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

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

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

语法格式及解释:

variable := expression
#其中,expression 是一个任意的表达式,而 variable 则是一个变量名

它的作用是将表达式的值赋值给变量,然后返回表达式的值。
在某些情况下,使用海象运算符可以使代码更加简洁、易读和高效

#不使用海象运算符
a = 5
print(a)  # 5
#使用海象运算符
print(a := 5) # 5
#有了海象运算符,他们可以被合并为一行

#ps:海象运算符不能当作直接赋值使用,比如
a := 5 # 会报错
#海象运算符有两步组成1.赋值 2.使用,a:=5 只进行了赋值,并未使用

用法示例

if语句

#不使用海象运算符
n = len(a)
if n > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

#使用海象运算符
if (n := len(a)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

while语句

#不使用海象运算符
line = f.readline()
while line != "":
    print(line, end="")
    line = f.readline()

#使用海象运算符
while (line := f.readline()) != "":
    print(line, end="")

三元表达式

#不使用海象运算符
money, spend = 2000, 1500
money = money - spend
print(f"你还有{money}元" if money > 1000 else f"你只有{money}元了")

#使用海象运算符
money, spend = 2000, 1500
print(f"你还有{money}元" if (money := money - spend) > 1000 else "你只有{money}元了")

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

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

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

标签:海象,money,运算符,表达式,print,line,3.8
From: https://www.cnblogs.com/LiTaooooo/p/18008570

相关文章

  • go-carbon v2.3.8 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
    carbon是一个轻量级、语义化、对开发者友好的golang时间处理库,支持链式调用。目前已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/carbongitee.com/golang-module/carbon安装使用Golang版本大于等于1.16//使用github库goget-ugithu......
  • Java 运算符详解与字符串处理技巧
    Java运算符算术运算符算术运算符用于执行常见的数学运算。运算符名称描述示例+加法将两个值相加x+y-减法从一个值中减去另一个值x-y*乘法将两个值相乘x*y/除法将一个值除以另一个值x/y%取模返回除法余数x%y++自增将变量......
  • 13 - 运算符
    运算符汇总参考资料:菜鸟教程:python3运算符Python文档:运算优先级算术运算符以下假设变量a=10,变量b=21:运算符描述实例+加-两个对象相加a+b输出结果31-减-得到负数或是一个数减去另一个数a-b输出结果-11*乘-两个数相乘或是返回一个被重复......
  • 运算符
    运算符Java语言支持如下运算符:优先级()算数运算符:+、-、*、/、%、++,--packageoperator;publicclassDemo04{publicstaticvoidmain(String[]args){//++--自增,自减一元运算符inta=3;intb=a++;//执行完这行代码后,先给b赋值......
  • 空值合并运算符 '??' 与 || 比较
    空值合并运算符'??'与||比较https://zh.javascript.info/nullish-coalescing-operator或运算符||可以以与??运算符相同的方式使用。`letfirstName=null;letlastName=null;letnickName="Supercoder";//显示第一个真值:alert(firstName||lastName||nic......
  • 双重按位非运算符 ~~ 对数字取整
    介绍按位非运算符(~)将操作数的位反转。它将操作数转化为32位的有符号整型。也就是可以对数字进行取整操作(保留整数部分,舍弃小数部分)。~-2//1~-2.222//1并且按位非运算时,任何数字 x(已被转化为32位有符号整型) 的运算结果都是 -(x+1)。那么双重按位非(~~)对数字的运......
  • 从C向C++——运算符重载
    本文的主要知识点是C++中的运算符重载。1.运算符重载所谓重载,就是赋予新的含义。函数重载(FunctionOverloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。**运算符重载(OperatorOverloading)**也是一个道理,同一个运算符可以有不同的功能。实际上,我们已经在不知不觉中......
  • Centos安装Python3.8.2-最新稳定版
    注*以下安装环境为centos,默认root权限下进行的安装升级宝塔自带的python2.7.5到3.8.2一.安装基础库1.更新yum源yum-yupdate2.安装EPEL扩展,PIP安装依赖epel-release库yum-yinstallepel-release当遇到SSL问题‘pipisconfiguredwithlocationsthatrequ......
  • C#中问号(?)运算符的历代新增用法
    本文是B站up主十月的寒流的相应视频的学习笔记,可以直接访问该视频获取更详细的讲解:C#中问号(?)运算符的历代新增用法C#1.0三目运算符stringres=x>5?"goood":"no"C#2.0可为空的值类型(NullableValueTypes)int?x=null;上述代码本质上是Nullable<int>x=nul......
  • 虚拟环境python3.8安装GDAL包
    网上的方法直接是:pipinstallGDAL‑3.4.1‑cp38‑cp38‑win_amd64.whl但是这个方法不适用于我,因为我的pycharm上面的anaconda是python3.7,但是我创建了一个python3.8的虚拟环境所以需要:1.切换虚拟环境2.导入离线包python3.8对应着的GDAL为:GDAL-3.4.3-cp38-cp38-win_amd6......