python之switch的实现

发布时间:2019-09-01 09:49:56编辑:auto阅读(1782)

    防伪码:忘情公子著


      switch是一种语法结构,在大多数的编程语言当中,都提供了switch语法结构。

      switch语句的作用与优点:

       switch语句用于编写多分支结构的程序,类似于if... elif... else(if多分支)语句

        switch语句表达的分支结构比if多分支语句表达的更清晰

        代码的可读性更高,执行效率也比if多分支语句要高

      python并没有提供switch语句,但是我们可以通过字典实现switch语句的功能。

        实现方法分为两步:

          1、定义一个字典

          2、调用字典的get()获取相应的表达式

      通过字典调用函数实现switch功能的方式如下:

    {1:case1,2:case2}.get(x,lambda *args,**keys: [args,keys])()

      下面我们通过编写一个简单的四则运算程序来看看switch在python中到底是如何实现的,以及有何优点。

      通过if多分支来写传统的四则运算程序:

    [root@localhost test]# cat cal.py 
    #!/usr/bin/python
    #coding:utf-8
    
    from __future__ import division    #当除法结果有小数时保留小数
    
    def plus(x,y):
        return x + y
    
    def minus(x,y):
        return x - y
    
    def times(x,y):
        return x * y
    
    def divide(x,y):
        return x / y
    
    def operator(x,o,y):
        if o == "+":
            print plus(x,y)
        elif o == "-":
            print minus(x,y)
        elif o == "*":
            print times(x,y)
        elif o == '/':
            print divide(x,y)
        else:
            pass
    
    operator(2,'+',4)
    [root@localhost test]# python cal.py 
    6

      如上例所示,当我们要执行除法时,首先会先判断“+”、“-”、“*”三条语句,这样就会显得有点多余,降低了程序执行的效率。

      接下来我们通过switch语句来写一下这个简单的四则运算程序:

    [root@localhost test]# cat scal.py 
    #!/usr/bin/python
    #coding:utf-8
    
    from __future__ import division
    
    plus = lambda x,y: x+y
    minus = lambda x,y: x-y
    times = lambda x,y: x*y
    divide = lambda x,y: x/y
    
    operator = {'+':plus,'-':minus,'*':times,'/':divide}
    
    def f(x,o,y):
        return operator.get(o,lambda *args,**keys: [o,arg,key])(x,y)
    
    print f(1,'+',2)
    print f(4,'-',2)
    print f(4,'*',2)
    print f(3,'/',2)
    print f(1,'%',2)
    [root@localhost test]# python scal.py 
    3
    2
    8
    1.5
    ['%', (1, 2), {}]    #这里是由上面的lambda语句收集操作数、运算符和字典而得来的
                         #当运算符不是+-*/中任意一个时,则用o收集运算符存至列表中,不执行运算操作
                         #用*args收集操作数
                         #用**keys收集字典,这个示例中没有字典,所以收集到的结果是一个空字典

      如上例如示,我们将直接在字典中取到key(也就是运算符),然后进行运算,如此的话就少了传统if多分支语句的判断过程,从而大大提高程序执行效率。

关键字

上一篇: Python的故事_one

下一篇: python excel操作