• Python 函数名作为字典值


      Python中是没有switch的, 所以有时我们需要用switch的用法, 就只能通过if else来实现了. 但if else写起来比较冗长,

    这时就可以使用Python中的dict来实现, 比switch还要简洁. 用法如下:

      如果是key1的情况就执行func1, 如果是key2的情况就执行func2...(func1, func2...所有的函数的参数形式需要相同),

    假设各个函数参数均为(arg1, arg2):

    dictName = {"key1":func1, "key2":func2, "key3":func3"...}  #字典的值直接是函数的名字,不能加引号
    dictName[key](arg1, arg2)

      示例代码如下:

    #!/usr/bin/python
    #File: switchDict.py
    #Author: lxw
    #Time: 2014/10/05
    
    import re
    
    def add(x, y):
        return x + y
    
    def sub(x, y):
        return x - y
    
    def mul(x, y):
        return x * y
    
    def div(x, y):
        return x / y
    
    
    def main():
        inStr = raw_input("Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.
    ")
        inList = re.split("(W+)", inStr)
        inList[1] = inList[1].strip()
        print("-------------------------")
        print(inList)
        print("-------------------------")
    
        #Method 1:
        if inList[1] == "+":
            print(add(int(inList[0]), int(inList[2])))
        elif inList[1] == "-":
            print(sub(int(inList[0]), int(inList[2])))
        elif inList[1] == "*":
            print(mul(int(inList[0]), int(inList[2])))
        elif inList[1] == "/":
            print(div(int(inList[0]), int(inList[2])))
        else:
            pass
    
        #Method 2:
        try:
            operator = {"+":add, "-":sub, "*":mul, "/":div}
            print(operator[inList[1]](int(inList[0]), int(inList[2])))
        except KeyError:
            pass
    
    
    if __name__ == '__main__':
        main()

    Output:

    PS J:> python .switchDict.py
    Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.
    1 + 2
    -------------------------
    ['1', '+', '2']
    -------------------------
    3
    3
    PS J:> python .switchDict.py
    Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.
    4 - 9
    -------------------------
    ['4', '-', '9']
    -------------------------
    -5
    -5
    PS J:> python .switchDict.py
    Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.
    6 / 5
    -------------------------
    ['6', '/', '5']
    -------------------------
    1
    1
    PS J:> python .switchDict.py
    Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.
    1 9 9
    -------------------------
    ['1', '', '9', ' ', '9']
    -------------------------
    PS J:> python .switchDict.py
    Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.
    1 ( 9
    -------------------------
    ['1', '(', '9']
    -------------------------
    PS J:>

       个人感觉, 如果想用switch来解决某个问题, 并且每种情况下的操作在形式上是相同的(如都执行某个函数并且这些函数有

    相同的参数), 就可以用这种方法来实现.

  • 相关阅读:
    网站安全:你面临2个至关重要的挑战!
    一个只需要点 「下一步」就完成监控 Windows
    论MOBA类游戏五号位的重要性
    CloudTest 事务监控:千呼万唤始出来
    深入浅出 ES6:ES6 与 Babel / Broccoli 的联用
    精华阅读第7期|程序员职业人生规划的三点建议
    (12)打鸡儿教你Vue.js
    (11)打鸡儿教你Vue.js
    (10)打鸡儿教你Vue.js
    (9)打鸡儿教你Vue.js
  • 原文地址:https://www.cnblogs.com/lxw0109/p/Python-funcName-DictValue.html
Copyright © 2020-2023  润新知