Python不像C/C++,Java等有switch-case的语法。不过其这个功能,比如用Dictionary以及lambda匿名函数特性来替代实现。

字典+函数实现switch模式下的四则运算:(switch 下运算符只用判断一次,不同于 if 、elsif 判断)

法1:
-- 代码
[root@bigdata01 ~]# cat t1.py
#!/usr/bin/python
#coding:utf-8

def add(x,y):
return x+y

def sub(x,y):
return x-y

def mul(x,y):
return x*y

def div(x,y):
return x/y

operator = {"+":add,"-":sub,"*":mul,"/":div}

def f(x,o,y):
print operator.get(o)(x,y)

f(2,"+",2)
f(2,"-",2)
f(2,"*",2)
f(2,"/",2)

-- 运行情况
[root@bigdata01 ~]# python t1.py
4
0
4
1

法2:
-- 代码
[root@bigdata01 ~]# cat t2.py
def calc(type,x,y):
calculation = {'+':lambda :x+y,
'*':lambda:x-y,
'-':lambda:x*y,
'/':lambda:x/y}
return calculation[type]()

result1 = calc('+',3,6)
result2 = calc('-',3,6)
result3 = calc('*',3,6)
result4 = calc('/',3,6)
print result1
print result2
print result3
print result4

-- 运行情况
[root@bigdata01 ~]# python t2.py
9
18
-3
0

总结: 利用 python 字典中的 key > 相当于 其他语言中的 switch,python 字典中 value 调用 对应函数 > 相当于 其他语言中的 case

最新文章

  1. Site Not Found
  2. go:interface{}、断言与类型转换
  3. MVC4 Filter 验证客户端访问类型(移动端、PC端)
  4. [Android] Web Console: Uncaught TypeError: Object [object Object] has no method 'xxx'
  5. register based 和 stack based虚拟机的区别
  6. [asp.net mvc]自定义filter
  7. 【动态规划】拦截导弹_dilworth定理_最长递增子序列
  8. Sqlserver 存储过程中结合事务的代码
  9. NV 200, 300, 400, 500, 600, 700, 800
  10. API 进程、线程函数
  11. Python字节流打包拆包
  12. 二维码(支持arc,苹果自带扫描,zbar扫描,二维码生成)
  13. 【数位DP】Hdu 3652:B-number
  14. id类型
  15. 解决 - java.lang.OutOfMemoryError: unable to create new native thread
  16. List之Distinct()
  17. 1.SpringBoo之Helloword 快速搭建一个web项目
  18. InterLocked学习笔记
  19. 原生js获取 一个dom元素距离页面可视区域的位置值 -- getBoundingClientRect
  20. odoo TransientModels must have log_access turned on

热门文章

  1. jquery添加类
  2. Leetcode 77
  3. 4.2 event
  4. Bata验收互评
  5. Linux文件与目录管理(三)
  6. 对va_list; va_start ; va_end ;vsprintf理解(转)
  7. hadoop hbase install (2)
  8. Kafka生产者APi
  9. TX2平台CAN总线收发功能的测试
  10. virtualenv 设置虚拟环境来运行不同版本的python