当前位置 博文首页 > Python 使用dict实现switch的操作

    Python 使用dict实现switch的操作

    作者:KeeJee 时间:2021-05-01 18:04

    Python3还是没有switch,可以利用if-else来实现,但是非常不方便。使用dict来实现会比较简洁优雅。

    # -*- coding: utf-8 -*-
    """
    Python利用dict实现switch
    """ 
    def add(x, y): return x + y  
    def subtract(x, y): return x - y           
    def multiply(x, y): return x * y 
    def divide(x, y):
      assert(y != 0)      
      return x / y 
    mapping = {"+": add, "-": subtract, "*": multiply, "/": divide}
     
    def cal(x, y, symbol="+"):
      assert(symbol in mapping)
      return mapping.get(symbol)(x, y) 
    if __name__ == "__main__":
      result = cal(3, 0, "&")

    补充:python 字典dict实现switch case【实际应用】(非dict.get()方法实现)

    看了不少帖子,几乎都是采用字典的.get()方法实现,据说有个弊端:“会将字典每个带括号的方法都执行一遍”。

    以下方法可避免该弊端,并可以传参。如有不足请指正!

    #!/usr/bin/python3 
    # conf_cmd = conf_items["cmd"].split(":")[0] 
    test_no = "T1"
    #test_no = "T2"
    #test_no = "T3"
     
    id = 1 
    def test1(id):
      print("test1:%d" % id)
     
    def test2(id):
      print("test2")
     
    def test3(id):
      print("test3")
     
    funcs = {"T1": test1,
         "T2": test2,
         "T3": test3} 
    try:
      func = funcs[test_no]
      func(id)
    except Exception:
      pass

    输出:

    test1:1

    补充:Python实现类似switch的分支结构

    switch语句相信大家都很熟悉,而且swith语句表达的分支结构比if...elif...else语句表达更清晰,代码的可读性更高,但是在Python中,却没有提供这一个关键字。那我们该如何通过其他方式来实现这类似的结构呢?

    虽然没有switch语句,但是我们可以通过Python中的dict即字典来实现类似switch结构的方法

    实现代码如下:

    def operator(o,x,y):
     result={
         '+' : x+y,
         '-' : x-y,
         '*' : x*y,
         '/' : x/y
      }
     print(result.get(o))
    oper=input()//接收从键盘输入的数据
    operator(oper,4,2)

    运行效果如下所示:

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持站长博客。如有错误或未考虑完全的地方,望不吝赐教。

    js
    下一篇:没有了