Python海象运算符
Python海象运算符号实在PEP 572中提出来的,并且在Python3.8版本引入。
英文名称是Assignment Expresions,即赋值表达式, 符号是 := 我们称之为海象运算符(walrus operator)。
语法格式如下:
variable_name := expression
或者
variable_name := value
就是变量名后跟一个表达式或者值,可以看成Python的新的赋值表达式(=也是Python的赋值表达式)。
用法:
if else语句中
常规写法
a=15
if a>10:
print("hello world")
海象运算符写法:
if a:=15>10:
print("hello world")
while语句中:
常规写法:
n=6
while n:
print("hello world")
n -=1
海象运算符写法:
n=6
while (n:=n-1)+1: #需要加1是因为在执行输出前n就减1了
print("hello world")
读取文件中
常规写法:
fp=open("test.txt","r")
while True:
line=fp.readline()
if not line: break
print(line.strip())
fp.close()
海象运算符写法:
fp=open("test.txt","r")
while line:=fp.readline():
print(line.strip())
用于列表推导:
nums = [16, 36, 49, 64]
def f(x):
print('运行了函数f(x)1次。')
return x ** 0.5
print([f(i) for i in nums if f(i) > 5])
一共就 4 个数字,但是函数被执行了 7 次。这是因为有三个数字满足列表推导式的条件,需要再额外计算 3次。当程序数据巨大的时候,这将浪费大量性能。
海象运算符写法:
nums = [16, 36, 49, 64]
def f(x):
print('运行了函数f(x)1次。')
return x ** 0.5
print([n for i in nums if (n := f(i)) > 5])
函数只执行了 4 次,函数执行结果被 n 储存,不需要额外计算。性能优于不使用 := 的。
当然,海象运算符同样适合用于字典推导式和集合推导式
----------------------------------------------------------------------
python3.10也支持switch/case语法了,但是关键字不是使用switch,而是match。
具体的match/case语法如下:
lang = input("What's the programming language you want to learn? ")
match lang:
case "JavaScript":
print("You can become a web developer.")
case "Python":
print("You can become a Data Scientist")
case "PHP":
print("You can become a backend developer")
case "Solidity":
print("You can become a Blockchain developer")
case "Java":
print("You can become a mobile app developer")
case _:
print("The language doesn't matter, what matters is solving problems.")
你可能注意到我没有像在其他编程语言中那样为每种情况添加 break
关键字。这就是 Python 的原生 switch
语句相对于其他语言的优势,break
关键字的功能是在幕后为你完成的。
小结
本文向你展示了如何使用 match
和 case
关键字编写 switch
语句。你还了解了 Python 程序员在 3.10 版本之前是如何编写它的。
Python match
和 case
语句的实现是为了提供其他编程语言(如 JavaScript、PHP、C++ 等)中的 switch
语句特性为我们提供的功能。
评论
发表评论