python case_5分钟学会如何在Python中实现Switch-case

Switch-case语句是编程控制的强大工具。在本文中,首先带领大家领略Java语言中的Switch,随后用实例教会大家如何用Python里实现Switch相同效果。

实例教会大家如何用Python里实现Switch相同效果

Switch-case语句是一种功能强大的编程功能,允许根据变量或表达式的值控制程序的流程。可以使用它来执行不同的代码块,具体取决于运行时的变量值。以下是Java中的switch语句的示例。

public static void switch_demo(String[] args) { int month = 8; String monthString; switch (month) { case 1: monthString = "January"; break; case 2: monthString = "February"; break; case 3: monthString = "March"; break; case 4: monthString = "April"; break; case 5: monthString = "May"; break; case 6: monthString = "June"; break; case 7: monthString = "July"; break; case 8: monthString = "August"; break; case 9: monthString = "September"; break; case 10: monthString = "October"; break; case 11: monthString = "November"; break; case 12: monthString = "December"; break; default: monthString = "Invalid month"; break; } System.out.println(monthString);}

这是Java中的switch语句的示例

Switchcase工作原理是:

1. 编译器为switch case语句生成一个跳转表

2. Switch变量/表达式被评估一次

3. Switch语句在跳转表中查找已计算的变量/表达式,并直接决定执行哪个代码块。

4. 如果未找到匹配项,则执行默认情况下的代码

在上面的示例中,根据变量的值,month标准输出中将显示不同的消息。在这种情况下,由于月份= 8,"8月"将以标准输出打印。

Python编程语言简介

当Guido van Rossum开发Python时,他希望创建一种"简单"的编程语言,绕过其他系统的漏洞。由于简单的语法和复杂的句法短语,该语言已成为各种科学应用的标准,如机器学习。

机器学习

Switch语句

虽然Java和PHP等流行语言都有内置的switch语句,但您可能会惊讶地发现Python语言没有。因此,您可能会尝试使用一系列if-else-if块,对switch语句的每种情况使用if条件。

但是,由于跳转表,switch语句比if-else-if梯形图快得多。它不是按顺序评估每个条件,而只需要查找一次计算的变量/表达式,然后直接跳转到相应的代码分支来执行它。

如何在Python中实现switch语句

Pythonic实现switch语句的方法是使用强大的字典映射,也称为关联数组,它提供简单的一对一键值映射。这是上面的switch语句的Python实现。在下面的示例中,我们创建一个名为switcher存储所有类似开关的案例的字典。

def one(): return "January"def two(): return "February"def three(): return "March"def four(): return "April"def five(): return "May"def six(): return "June"def seven(): return "July"def eight(): return "August"def nine(): return "September"def ten(): return "October"def eleven(): return "November"def twelve(): return "December"def numbers_to_months(argument): switcher = { 1: one, 2: two, 3: three, 4: four, 5: five, 6: six, 7: seven, 8: eight, 9: nine, 10: ten, 11: eleven, 12: twelve } # Get the function from switcher dictionary func = switcher.get(argument, lambda: "Invalid month") # Execute the function print func()

在上面的示例中,当您将参数传递给switch_demo函数时,会根据switcher字典映射进行查找。如果找到匹配项,则打印关联值,否则将打印默认字符串("无效月份")。默认字符串有助于实现switch语句的"默认情况"。

函数的字典映射

这是它变得更有趣的地方。Python字典的值可以是任何数据类型。因此,不必局限于使用常量(整数,字符串),您还可以使用函数名称和lambdas作为值。

例如,还可以通过创建函数名称字典作为值来实现上述switch语句。在这种情况下,switcher是函数名称的字典,而不是字符串。

def one(): return "January"def two(): return "February"def three(): return "March"def four(): return "April"def five(): return "May"def six(): return "June"def seven(): return "July"def eight(): return "August"def nine(): return "September"def ten(): return "October"def eleven(): return "November"def twelve(): return "December"def numbers_to_months(argument): switcher = { 1: one, 2: two, 3: three, 4: four, 5: five, 6: six, 7: seven, 8: eight, 9: nine, 10: ten, 11: eleven, 12: twelve } # Get the function from switcher dictionary func = switcher.get(argument, lambda: "Invalid month") # Execute the function print func()

虽然上述函数非常简单并且只返回字符串,但您可以使用此方法在每个函数中执行精细的代码块。实际上,如果要在对象上调用方法,甚至可以使用调度方法动态确定在运行时需要调用哪个函数。

class Switcher(object): def numbers_to_months(self, argument): """Dispatch method""" method_name = 'month_' + str(argument) # Get the method from 'self'. Default to a lambda. method = getattr(self, method_name, lambda: "Invalid month") # Call the method as we return it return method() def month_1(self): return "January" def month_2(self): return "February" def month_3(self): return "March"……

基于传递的参数,内置getattr()函数将检索具有特定名称的对象方法。

Input: a=Switcher()Input: a.numbers_to_months(1)Output: JanuaryPython方法的优势

由于您可以在运行时更改Python字典(添加,删除或更新键值对),因此可以轻松地动态更改的switch语句。以下是一个例子,

def zero(): return "zero"def one(): return "one"def two(): return "two"switcher = { 0: zero, 1: one, 2: two }def numbers_to_strings(argument): # Get the function from switcher dictionary func = switcher.get(argument, "nothing") # Execute the function return func()Input: numbers_to_strings(1)Output: OneInput: switcher[1]=two #changing the switch caseInput: numbers_to_strings(1)Output: Two

Switch case是一个非常有用的编程结构,它不仅提供比if-else语句更好的性能,而且还供了更易于管理的代码。如果您感觉受到Python中缺少switch语句的限制,那么希望上面的教程可以帮助您。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值