Python实现switch语句,没错!是Switch语句

Python中是没有switch语句的;条件判断只能使用if…else…这样的语句。

但是伟大的劳动人民是非常有头脑的,我们总有办法。

先看一段代码:

{
    '0' : lambda : print('你是人妖'),
    '1' : lambda : print('你是男的'),
    '2' : lambda : print('你是女的'),
}['0']()

实现原理很简单,在字典中使用索引的方法来确定要执行的代码。

再来一个示例:

switch = {
    "+":lambda a,b:a+b,
    "-":lambda a,b:a-b,
    "*":lambda a,b:a*b,
    "/":lambda a,b:a/b
}
 
print(switch["*"](6,2))

这段代码来选择运算符,从而对两个值进行计算,这是不是比if else语句要好用多了呢?你可以试试用if语句来实现上述功能。

但是这个switch语句是有缺陷的,他没有实现else语句。

我们可以使用try语句来实现switch else的功能:

try:
    print(switch['**'](6,2))
except KeyError as e:
    pass

来看看更高级的实现:

class _switch:
    def __init__(self):
        self._once = False
    def __call__(self,exp,code):
        if eval(exp):
            self._once = True
            exec(code)
    def xelse(self,code):
        if not self._once:
            exec(code)
            
switch=_switch()
 
a=10
 
switch( 'a==5',"""
global a
print('a等于5,将他乘以10')
a = a*10
""")
switch('a==10',"""
global a
print('a等于5,将他乘以20')
a=a*20
""")
switch.xelse("""
print('没有匹配条件则执行')
""")
 
print(a)

上文中的switch类是作者临时起意,功能肯定还不完善。但已经能完成一些简单的条件选择。有兴趣的朋友可以完善它。

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/952.html

分类: 计算机技术
推荐阅读:
Linux系统删除目录下的所有空目录 在Linux系统下,你如果想删除某个目录下所有的空目录,那你可以通过这一条命令实现:
Python打印有颜色的字符串 使用Python在命令行或shell终端输出有颜色的字符串,效果如下:
Golang中=和:=的区别 在Golang中,=是赋值运算符,而 :=是声明赋值运算符;使用=进行赋值前,其变量需要已被声明,而使用 := ,变量不需要被声明,且能自动识别被赋值的数据类型;
Python 使用tld库获取复杂URL的顶级域名 我们会碰到各种各样的URL链接,比如:www.a.com/ b.com.cn/ a.b.c.com.cn a.com/b.com Python有内置的库可以识别一些简单的URL,但是像a.b.c.com.cn这样却无能为力。我们需要一个强大的第三方库来实现提取顶级域名。
Linux从视频文件里提取音频 通常来说,从一个视频文件里提取出其音频可能需要你学习使用某些音视频处理软件;而在Linux下,你只需要一条命令即可实现将将音频从视频文件中提取出来:
Python pdb调试器详细教程 在Python可使用一个叫pdb的模块用于调试代码;pdb模块为Python程序定义了一个交互式的源代码调试器,你可通过它设置断点、逐行执行、堆栈检查等等常用调试功能;