概述:
在某些場景下,swith 比 if else 的效率更高,但是在 Python 中是沒有switch的,今天學到了一種用字典實現switch功能的方法
案例:
Python 2下,實現都2個計算器功能,就是簡單的加減乘除
首先使用 if else的方式
#/usr/bin/python #coding:utf-8 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) operator(2,'-',4) operator(2,'*',4) operator(2,'/',4)
從代碼中可以看出,如果要執行除法,或者四則運算以外的計算,需要把之前的if條件都要判斷一遍,效率不高。可以嘗試使用字典來改寫
#/usr/bin/python #coding:utf-8 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 ##用字典實現switch operator={"+":jia,"-":jian,"*":cheng,"/":chu} print operator["+"](3,2) print operator["/"](3,2) ##用 get ,對沒有的運算符不會報KeyError print operator.get("%")(3,2) def f(x,o,y): print operator.get(o)(x,y)
'''
通過字典調用函數格式如下
{1:case1,2:case2}.get(x,lambda *arg,**kwargs:)()
'''
##代碼可以繼續簡化,直接在字典中進行運算
#/usr/bin/python
#coding:utf-8
from __future__ import division
x=1
y=2
operator="/"
result={"+":x+y,"-":x-y,"*":x*y,"/":x/y}
print result.get(operator)
案例比較簡單,主要是學習思路