Python海象运算符超详细讲解
作者:小嗷犬 发布时间:2023-08-04 17:26:19
标签:Python,海象运算符
介绍
海象运算符,即 :=
,在 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}元了")
来源:https://blog.csdn.net/qq_63585949/article/details/128774056


猜你喜欢
- 前文介绍了Oracle 中实现数据透视表的几种方法,今天我们来看看在 MySQL/MariaDB 中如何实现相同的功能。本文使用的示例数据可
- 在源环境中启动CLion需要告知CLion ROS特定的环境变量。通过运行来源工作空间时,将在当前shell中检索这些变量source ./
- 由于:Django处理静态文件不太友好;以后有可能需要处理php或者其他资源的请求;所以考虑结合nginx,使用nignx做它擅长的路由分发
- 在上一篇的基础上,继续在透明窗体上绘制小球,一、画个大球看看(一)核心代码在on_resize函数内部增加如下画圆的代码 can
- 前言QTableWidget是Qt程序中常用的显示数据表格的控件,类似于c#中的DataGrid。QTableWidget是QTableVi
- str.join即sequence – 要连接的元素序列。返回通过指定字符连接序列中元素后生成的新字符串。n =
- 这篇文章主要介绍了基于python实现把图片转换成素描,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 一、简介urllib 库,它是 Python 内置的 HTTP 请求库,不需要额外安装即可使用,它包含四个模块:`request` 请求模块
- 结论:copy复制会比等号复制慢。但是copy复制为值复制,改变原切片的值不会影响新切片。而等号复制为指针复制,改变原切片或新切片都会对另一
- JS高级 一、JS的数据类型 1.基本类型 JS共有5大基本类型,分别是: 1)Undefined。他只有一个值:undefined。如果一
- 数据文件 66001_.txt 内容格式:date,jz0,jz1,jz2,jz3,jz4,jz52012-12-28,0.9326,0.8
- 前言最近找几个老友准备聊天发现几个已经被删除好友名单,做为潜水党多年的我已经不知道成为多少人的黑名单,但是好友列表却依然有不是好友的名单,面
- 一、.NET Framework Data Provider for SQL Server类型:.NET Framework类库使用:Sys
- 在 Web 应用中,有时需要在响应请求前或者响应请求后做一些处理,为了让每个视图函数避免编写重复功能的代码,Flask 提供了请求钩子,它们
- Django自带有个强大的后天管理系统,接下来我就给大家介绍一下x的admin一些强大的操作及后台美化。首先给大家介绍一些xadmin的注册
- 大家知道直接使用ASP是不能够重启服务器的,这时我们需要制作一个组件来实现功能,ASP通过这个组件调用系统API,然后按照不同的重启和关机方
- 我们用pyinstaller把朋友文件打包成exe文件,但有时候我们需要还原,我们可以用pyinstxtractor.py用法:python
- AERGO SHIP:用于开发智能合约的包管理器用于构建、测试和部署分布式应用程序的客户端框架和开发环境构建大型分布式应用程序是很困难的,因
- PHP 有一个非常简单的垃圾收集器,它实际上将对不再位于内存范围(scope)中的对象进行垃圾收集。垃圾收集的内部方式是使用一个引用计数器,
- 每一个变量都有数据类型,Go中的数据类型有:简单数据类型:int、float、complex、bool和string数据结构或组合(comp