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 只进行了赋值,并未使用

#使用海象运算符要明确的表达,比如
print(a := 5 + 2)  # 7
print((a := 5) + 2) # 7
#两个看似结果一样,运行逻辑却不同

用法示例

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循环、三元表达式等。

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

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

posted @   LiTaooooo  阅读(467)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
点击右上角即可分享
微信分享提示