Python Switch 语句

在 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 实现了一个称为“结构模式匹配”的 switch case 功能。你可以使用 match 和 case 关键字来实现此功能。

有些人争论 match 和 case 是否是 Python 中的关键字。这是因为你可以将它们都用作变量和函数名称。但那是另一回事了。

如果你愿意,可以将这两个关键字称为“软关键字”。

在本文中,我将向你展示如何在 Python 中使用 match 和 case 关键字编写 switch 语句。

但在此之前,我必须向你展示 Python 程序员过去是如何模拟 switch 语句的。

Python 程序员如何模拟 Switch Case

在当时,Python 程序员有多种模拟 switch 语句的方法。

使用函数和 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 关键字实现 Switch 语句

要使用结构模式匹配功能编写 switch 语句,可以使用以下语法:

match term:
    case pattern-1:
         action-1
    case pattern-2:
         action-2
    case pattern-3:
         action-3
    case _:
        action-default

请注意,下划线符号是用于为 Python 中的 switch 语句定义默认情况的符号。

下面显示了一个使用 match case 语法编写的 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 关键字编写 switch 语句。你还了解了 Python 程序员在 3.10 版本之前是如何编写它的。

Python match 和 case 语句的实现是为了提供其他编程语言(如 JavaScript、PHP、C++ 等)中的 switch 语句特性为我们提供的功能。

感谢你阅读本文。