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实现截屏的函数
Jul 25 Python
python数据清洗系列之字符串处理详解
Feb 12 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 Python
对python字典过滤条件的实例详解
Jan 22 Python
PyTorch的SoftMax交叉熵损失和梯度用法
Jan 15 Python
Python Websocket服务端通信的使用示例
Feb 25 Python
在 Python 中使用 MQTT的方法
Aug 18 Python
python批量修改文件名的示例
Sep 27 Python
Python urllib库如何添加headers过程解析
Oct 05 Python
Django 实现图片上传和下载功能
Dec 31 Python
python实现层次聚类的方法
Nov 01 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
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
javascript dom追加内容实现示例
2013/09/21 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
Python编程实现正则删除命令功能
2017/08/30 Python
Python pandas如何向excel添加数据
2020/05/22 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
火车来了教学反思
2014/02/11 职场文书
给老师的检讨书
2014/02/11 职场文书
新年晚会主持词
2014/03/24 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
高中教师个人工作总结
2015/02/10 职场文书
公司回复函格式
2015/07/14 职场文书
村主任当选感言
2015/08/01 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
导游词之襄阳古城
2019/09/27 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
Python Django ORM连表正反操作技巧
2021/06/13 Python
Vue监视数据的原理详解
2022/02/24 Vue.js
Selenium浏览器自动化如何上传文件
2022/04/06 Python