Python海象运算符超详细讲解
作者:小嗷犬 时间:2023-08-04 17:26:19
介绍
海象运算符,即 :=
,在 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
标签:Python,海象运算符
0
投稿
猜你喜欢
推荐几款 Redis 可视化工具(太厉害了)
2024-01-26 11:15:59
使用Python处理json字符串中的非法双引号问题
2021-01-19 19:26:13
matplotlib交互式数据光标实现(mplcursors)
2022-05-02 14:11:30
使用SQL Server时最容易忽略的21个问题
2009-01-13 13:59:00
Python文件读取的3种方法及路径转义
2021-12-27 03:48:28
pytorch--之halfTensor的使用详解
2021-08-18 14:44:08
Mysql 索引该如何设计与优化
2024-01-21 19:22:19
深入Oracle字符集的查看与修改详解
2023-06-25 22:13:15
hta应用—代码统计工具
2024-01-31 14:40:44
Collatz 序列、逗号代码、字符图网格实例
2023-07-27 10:24:31
Refactoring HTML 书评
2008-07-10 12:00:00
Python学习之加密模块使用详解
2022-06-01 03:58:03
Python机器视觉之基于OpenCV的手势检测
2021-06-12 10:54:11
JS运行耗时操作的延时显示方法
2024-05-10 14:07:25
C#访问SQL Server数据库的实现方法
2024-01-14 17:14:23
Oracle下时间转换在几种语言中的实现
2009-02-28 11:09:00
Python脚本破解压缩文件口令实例教程(zipfile)
2023-03-14 08:31:08
Python 文件重命名工具代码
2022-09-25 05:15:32
在Vue项目中使用Typescript的实现
2024-04-26 17:39:57
SQL行号排序和分页(SQL查询中插入行号 自定义分页的另类实现)
2012-07-21 14:45:15