Python 开关语句 - 开关案例示例

534 阅读3分钟

在 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实现了一个叫做 "结构模式匹配 "的开关盒功能。你可以用matchcase 关键字实现这个功能。

有些人争论matchcase 是否是 Python 中的关键字。这是因为你可以把它们都作为变量和函数名使用。但这是另一个故事了。

如果你愿意,你可以把这两个关键字称为 "软关键字"。

在这篇文章中,我将向你展示如何使用matchcase 这两个关键字在 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中用matchcase 关键词实现开关语句

要用结构模式匹配功能编写开关语句,你可以使用下面的语法:

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 语句特性所赋予我们的功能。

谢谢你的阅读。