Python Switch Case三种实现方法代码实例


Posted in Python onJune 18, 2020

Python没有switch语句,只能通过模拟来对应实现:

方法一:使用dictionary

**values = {
value1: do_some_stuff1,
value2: do_some_stuff2,
...
valueN: do_some_stuffN,
}
values.get(var, do_default_stuff)()

根据需求可以自行更改参数内容,灵活运用

def add(x,y): 
  print x+y 
def minus(x,y): 
  print x-y 
def multiply(x,y): 
  print x*y 
def div(x,y): 
  print x/y 
def fun_case_list(key,arg1,arg2):
  operator = {
  '+':add,
  '-':minus,
  '*':multiply,
  '/':div
  }
  if operator.has_key(key):
    return operator.get(key)(arg1,arg2)
  else:
    return 'No [%s] case in dic'%key #or do other func
if __name__ == "__main__":
  fun_case_list('*',3,5)
  fun_case_list('l',3,4)

或者你可以自己造一个类来实现:

class switch_case(object):
  def case_to_function(self,case,arg1,arg2):
    func_name = 'case_func_'+str(case)
    try:
      method = getattr(self,func_name)
      return method(arg1,arg2)
    except AttributeError:
      return 'No func found in case list,do default action here'
  def case_func_add(self,arg1,arg2):
    temp = arg1 + arg2
    return temp
  def case_func_minus(self,arg1,arg2):
    temp = arg1 - arg2
    return temp
  def case_func_multiply(self,arg1,arg2):
    temp = arg1 * arg2
    return temp
  def case_func_div(self,arg1,arg2):
    temp = arg1 / arg2
    return temp
func = 'minus'
case = switch_case()
print case.case_to_function(func,2,5)


#或者是构造属性去送参数,看个人喜好
class switch_case(object):
  def __init__(self, case, arg1, arg2):
    self.case = str(case)
    self.arg1 = arg1
    self.arg2 = arg2
  def case_to_function(self):
    func_name = 'case_func_'+str(self.case)
    try:
      method = getattr(self,func_name)
      return method()
    except AttributeError:
      return 'No func found in case list,do default action here'
    
  def case_func_add(self):
    temp = self.arg1 + self.arg2
    return temp
  def case_func_minus(self):
    temp = self.arg1 - self.arg2
    return temp
  def case_func_multiply(self):
    temp = self.arg1 * self.arg2
    return temp
  def case_func_div(self):
    temp = self.arg1 / self.arg2
    return temp

func = 'minxus'
case = switch_case(func,2,5)
print case.case_to_function()

方法二:使用lambda

result = {
'a': lambda x: x * 5,
'b': lambda x: x + 7,
'c': lambda x: x - 2
}[value](x)

方法三:Brian Beck提供了一个类 switch 来实现switch的功能

class switch(object):
  def __init__(self, value):
    self.value = value
    self.fall = False
  def __iter__(self):
    """Return the match method once, then stop"""
    yield self.match
    raise StopIteration
  def match(self, *args):
    """Indicate whether or not to enter a case suite"""
    if self.fall or not args:
      return True
    elif self.value in args: # changed for v1.5, see below
      self.fall = True
      return True
    else:
      return False

v = 'two'
for case in switch(v):
  if case('one'):
    print 1
    break
  if case('two'):
    print 2
    break
  if case('ten'):
    print 10
    break
  if case('eleven'):
    print 11
    break
  if case(): # default, could also just omit condition or 'if True'
    print "something else!"
    # No need to break here, it'll stop anyway

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python字符串拼接的几种方法整理
Aug 02 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
详解Python Qt的窗体开发的基本操作
Jul 14 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
Python二次规划和线性规划使用实例
Dec 09 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
Python实现AI换脸功能
Apr 10 Python
Python3+Django get/post请求实现教程详解
Feb 16 Python
python 统计代码耗时的几种方法分享
Apr 02 Python
Python3开发环境搭建详细教程
Jun 18 #Python
Python collections.defaultdict模块用法详解
Jun 18 #Python
python实现批量命名照片
Jun 18 #Python
pandas之分组groupby()的使用整理与总结
Jun 18 #Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 #Python
Python调用shell cmd方法代码示例解析
Jun 18 #Python
Python如何自动获取目标网站最新通知
Jun 18 #Python
You might like
php环境无法上传文件的解决方法
2014/04/30 PHP
php 问卷调查结果统计
2015/10/08 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
利用jQuery的deferred对象实现异步按顺序加载JS文件
2013/03/17 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
Python 第一步 hello world
2009/09/25 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
python实现简单名片管理系统
2018/11/30 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
python中的colorlog库使用详解
2019/07/05 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
django model通过字典更新数据实例
2020/04/01 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
初三学习计划书范文
2014/04/30 职场文书
学校搬迁方案
2014/06/15 职场文书
中学生思想品德评语
2014/12/31 职场文书
亲属关系公证书样本
2015/01/23 职场文书
2015年测量员工作总结
2015/05/23 职场文书
python 模块重载的五种方法
2021/04/24 Python
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle