在 3.10 版之前,Python 从来没有一个功能可以实现 switch 语句在其它编程语言中的作用。
所以,如果你想执行多个条件语句,你必须使用elif 这样的关键字:
age = 120
if age > 90:
print("You are too old to party, granny.")
elif age < 0:
print("You're yet to be born")
elif age >= 18:
print("You are allowed to party")
else:
"You're too young to party"
# Output: You are too old to party, granny.
从3.10版本开始,Python实现了一个叫做 "结构模式匹配 "的开关盒功能。你可以用match 和case 关键字实现这个功能。
有些人争论match 和case 是否是 Python 中的关键字。这是因为你可以把它们都作为变量和函数名使用。但这是另一个故事了。
如果你愿意,你可以把这两个关键字称为 "软关键字"。
在这篇文章中,我将向你展示如何使用match 和case 这两个关键字在 Python 中写一个开关语句。
但在此之前,我必须向你展示Python程序员在过去是如何模拟switch语句的。
Python程序员是如何模拟switch情况的
在过去,Pythonistas 有多种方法来模拟开关语句。
使用一个函数和elif 关键字是其中之一,你可以这样做:
def switch(lang):
if lang == "JavaScript":
return "You can become a web developer."
elif lang == "PHP":
return "You can become a backend developer."
elif lang == "Python":
return "You can become a Data Scientist"
elif lang == "Solidity":
return "You can become a Blockchain developer."
elif lang == "Java":
return "You can become a mobile app developer"
print(switch("JavaScript"))
print(switch("PHP"))
print(switch("Java"))
"""
Output:
You can become a web developer.
You can become a backend developer.
You can become a mobile app developer
"""
如何在Python 3.10中用match 和case 关键词实现开关语句
要用结构模式匹配功能编写开关语句,你可以使用下面的语法:
match term:
case pattern-1:
action-1
case pattern-2:
action-2
case pattern-3:
action-3
case _:
action-default
注意,下划线符号是你用来定义Python中switch语句的默认情况的。
下面是一个用匹配大小写语法编写的开关语句的例子。它是一个打印出你在学习各种编程语言时可以成为的程序:
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.")
这比多个elif 语句和用函数模拟switch语句的语法要干净得多。
你可能注意到我没有在每个案例中添加break关键字,就像在其他编程语言中那样。这就是Python的原生switch语句比其他语言的优势所在。break 关键字的功能是在幕后为你完成的。
总结
这篇文章向你展示了如何使用 "match "和 "case "关键字编写开关语句。你还学习了在 3.10 版之前 Python 程序员是如何编写的。
实现 Python 的 match 和 case 语句是为了提供其他编程语言如 JavaScript、PHP、C++ 和其他编程语言中的 switch 语句特性所赋予我们的功能。
谢谢你的阅读。