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 31 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
使用Python从零开始撸一个区块链
Mar 14 Python
python中pika模块问题的深入探究
Oct 13 Python
Python3数字求和的实例
Feb 19 Python
Python爬虫学习之翻译小程序
Jul 30 Python
Anaconda 查看、创建、管理和使用python环境的方法
Dec 03 Python
详解python常用命令行选项与环境变量
Feb 20 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
学点简单的Django之第一个Django程序的实现
Feb 24 Python
python源文件的字符编码知识点详解
Mar 04 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用GD库生成高质量的缩略图片
2011/03/09 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
浅析php header 跳转
2013/06/17 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
python实时分析日志的一个小脚本分享
2017/05/07 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
如何保障Web服务器安全
2014/05/05 面试题
消防器材管理制度
2014/01/28 职场文书
运动会入场词200字
2014/02/15 职场文书
党课培训主持词
2014/04/01 职场文书
家长反馈意见及建议
2015/06/03 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技