Python3还是没有switch,可以利用if-else来实现,但是非常不方便。使用dict来实现会比较简洁优雅。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# -*- 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()方法实现,据说有个弊端:“会将字典每个带括号的方法都执行一遍”。
以下方法可避免该弊端,并可以传参。如有不足请指正!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#!/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 |
输出:
1
|
test1: 1 |
补充:Python实现类似switch的分支结构
switch语句相信大家都很熟悉,而且swith语句表达的分支结构比if...elif...else语句表达更清晰,代码的可读性更高,但是在Python中,却没有提供这一个关键字。那我们该如何通过其他方式来实现这类似的结构呢?
虽然没有switch语句,但是我们可以通过Python中的dict即字典来实现类似switch结构的方法
实现代码如下:
1
2
3
4
5
6
7
8
9
10
|
def operator(o,x,y): result = { '+' : x + y, '-' : x - y, '*' : x * y, '/' : x / y } print (result.get(o)) oper = input () / / 接收从键盘输入的数据 operator(oper, 4 , 2 ) |
运行效果如下所示:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/ZK_J1994/article/details/78593955