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基础教程之简单入门说明(变量和控制语言使用方法)
Mar 25 Python
初步解析Python下的多进程编程
Apr 28 Python
Python实现简单的文件传输与MySQL备份的脚本分享
Jan 03 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
pandas string转dataframe的方法
Apr 11 Python
python浪漫表白源码
Apr 05 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
Jan 14 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
如何利用python web框架做文件流下载的实现示例
Jun 02 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
python编写扎金花小程序的实例代码
Feb 23 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代码
2016/10/08 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
js正则相关知识点专题
2018/05/10 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
王纯业的Python学习笔记 下载
2007/02/10 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python实现的爬虫功能代码
2017/06/24 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
python实现AES加密解密
2019/03/28 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
python中的yield from语法快速学习
2020/11/06 Python
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
一道SQL面试题
2012/12/31 面试题
武汉东之林科技有限公司机试
2013/09/17 面试题
员工考核评语大全
2014/04/26 职场文书
nginx 添加http_stub_status_module模块
2022/05/25 Servers