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 @ 2024-02-05 17:49  LiTaooooo  阅读(122)  评论(0编辑  收藏  举报