zoukankan      html  css  js  c++  java
  • 拓展:switch实现

    拓展:switch实现

    参考中谷教育 python视频:switch

     switch语句用于编写多分支结构的程序,类似于if ... elif ...else语句。
    switch语句表达的分支结构比if...elif...else语句表达的更清晰,代码的可读性更高
    但是,python并没有提供switch语句 !!
    python可以通过字典实现switch语句的功能,实现方法分为两步:
    ——首先定义一个字典。
    ——其次,调用字典里的get()获取响应的表达式。
     
    通过字典调用函数:
    {1:case1,2:case2}.get(x,lambda *arg,**key:)()       这语句比较难理解。通过例子来说明:

     简单的计算器:
    用if语句判断加减乘除
     
     
    #4+ - * /
    #
     
    from __future__ import division
     
    def jia(x,y):
        return(x + y)
     
    def jian(x,y):
        return(x - y)
     
    def cheng(x,y):
        return(x * y)
     
    def chu(x,y):
        return(x / y)
     
    def operator(x,o,y):
        if o == '+':
            print(jia(x,y))
        elif o == '-':
            print(jian(x,y))
        elif o == '*':
            print(cheng(x,y))
        elif o == '/':
            print(chu(x,y))
        else:
            pass
        
    operator(2,'/',4)
     如果进行除法运算,先得判断是否加,减,乘之后再判断 除,实际上前三次判断是多余的。并不是直接根据我们给的符号进行运算,而是做了几次判断后才运算,如果符号不是加减乘除范围内,那么代码会做四次判断,结果才到pass
    switch实现是类似于这样:我们事先把四个条件摆在这里,当你传回来的值符合哪个条件的时候直接执行就可以了 
    from __future__ import division
     
    def jia(x,y):
        return(x + y)
    #jia = lambda x,y : x + y 
    def jian(x,y):
        return(x - y)
    #jian = lambda x,y : x - y
     
    def cheng(x,y):
        return(x * y)
    # cheng = lambda x,y : x * y
     
    def chu(x,y):
        return(x / y)
    #chu = lambda x,y : x / y
     
    #
    operator = {'+' : jia'-' : jian,'*' : cheng'/' : chu}
    #(operator['+'](3,2))  jia(3,2)
    #get()
    print(operator['/'](3,2))
    这里省去了if的判断环节,只是把值告诉字典,然后去取值做运算。 也可以增加一个函数: 
    from __future__ import division
     
    jia = lambda x,y : x + y 
    jian = lambda x,y : x - y
    cheng = lambda x,y : x * y
    chu = lambda x,y : x / y
     
    #
    operator = {'+' : jia'-' : jian,'*' : cheng'/' : chu}
    #(operator['+'](3,2))  jia(3,2)
    #print(operator['/'](3,2))
    #get()
    def f(x,o,y):
        print(operator.get(o)(x,y))
        
    f(3,'/',2)
     当然按照{1:case1,2:case2}.get(x,lambda *arg,**key:)() 这个形式,还可以改为: 
    from __future__ import division
     
    jia = lambda x,y : x + y 
    jian = lambda x,y : x - y
    cheng = lambda x,y : x * y
    chu = lambda x,y : x / y
     
    def f(x,o,y):
        print({'+' : jia, '-' : jian,'*' : cheng, '/' : chu}.get(o)(x,y))
        
    f(3,'/',2)
     当然当然,还可以简化为这样: 
    from __future__ import division
    x = 3
    y = 2
    operator = '/'
    result = {
              '+' : x + y,
              '-' : x - y,
              '*' : x * y,
              '/' : x / y
              }
    print(result.get(operator))
     当然当然当然当然,还可以这样简化: 
    from __future__ import division
     
    def f(x,o,y):
        print({'+' : x+y, '-' : x-y,'*' : x*y, '/' : x/y}.get(o))
        
    f(3,'/',2)
  • 相关阅读:
    mac,使用jadx,apktool,反编译apk,打包apk,签名,阅读smali文件
    对安卓逆向的认识
    js逆向答疑
    js-15:js逆向总结
    对js逆向的认识
    开发工具使用技巧-pycharm-mac
    ES6的新特性
    js-BOM操作
    js-DOM操作
    js-ECMAScript-6:自定义对象
  • 原文地址:https://www.cnblogs.com/fishdm/p/3574078.html
Copyright © 2011-2022 走看看