Python中使用字典完成switch功能


 

概述:

  在某些場景下,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)

 

案例比較簡單,主要是學習思路

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM