Python海象运算符超详细讲解

作者:小嗷犬 时间:2023-08-04 17:26:19 

介绍

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

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

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

Python海象运算符超详细讲解

语法

海象运算符的语法格式如下:

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
  • asp之家 网络编程 m.aspxhome.com