首页 > 编程语言 > 详细

Python中使用字典完成switch功能

时间:2020-07-06 14:44:52      阅读:52      评论:0      收藏:0      [点我收藏+]

 

概述:

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

 

案例比较简单,主要是学习思路

 

Python中使用字典完成switch功能

原文:https://www.cnblogs.com/bxhsdy/p/13254481.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!