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

python之 利用字典与函数实现switch case功能的更多相关文章

  1. Python 利用字典实现类似 java switch case 功能

    def add(): print('add') def sub(): print('sub') def exit(): print('exit') choice = { '1' : add, '2' ...

  2. 利用MYSQL的函数实现用户登录功能,进出都是JSON(第二版)

    利用MYSQL的函数实现用户登录功能,进出都是JSON(第二版) CREATE DEFINER=`root`@`%` FUNCTION `uc_session_login`( `reqjson` JS ...

  3. C# 利用键值对取代Switch...Case语句

    swich....case 条件分支多了之后,会严重的破坏程序的美观性. 比如这个 上述代码是用于两个进程之间通信的代码,由于通信的枚举特别的多,所以case的分支特别的多.导致了代码的可读性,可维护 ...

  4. Python实现类似switch...case功能

    最近在使用Python单元测试框架构思自动化测试,在不段的重构与修改中,发现了大量的if...else之类的语法,有没有什么好的方式使Python具有C/C#/JAVA等的switch功能呢? 在不断 ...

  5. Python中的字典分组函数(groupby,itertools)

    from operator import itemgetter # itemgetter用来去dict中的key,省去了使用lambda函数 from itertools import groupby ...

  6. 利用MYSQL的函数实现用户登录功能,进出都是JSON(第一版)

    以HMAC密钥形式发放密钥令牌 功能如下 1:记录用户的登录的IP地址.时间 2:实现密码错误次数超限后锁定,并提示何时解锁 CREATE DEFINER=`root`@`%` FUNCTION `u ...

  7. 利用PHP绘图函数实现简单验证码功能

    index.php __________________________________________________________________________________________ ...

  8. python中Switch/Case实现

    学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现.所以不妨自己来实现Switch/Case功能. 方法一 通过字典实现 ...

  9. C语言switch/case圈复杂度优化重构

    软件重构是改善代码可读性.可扩展性.可维护性等目的的常见技术手段.圈复杂度作为一项软件质量度量指标,能从一定程度上反映这些内部质量需求(当然并不是全部),所以圈复杂度往往被很多项目采用作为软件质量的度 ...

随机推荐

  1. python-day34--进程补充

    一.进程补充: 1,生产者消费者模型: 两类角色,一类负责生产数据,另外那类负责数据 生产完放到共享空间,另外那类到空间取数据进行处理 好处: 生产数据的同时可以进行数据的处理,不用等(并发效果) 问 ...

  2. Leetcode 86

    /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...

  3. iOS UI-界面传值(三种方法)

    #import <Foundation/Foundation.h> @interface DataModel : NSObject @property (nonatomic, copy) ...

  4. SQL基础分页存储过程(案例一)

    --分页 存储过程 案例 -- 所执行的存储过程 create proc pageForUsers @currPage int, --当前页数 @pageSize int, --每页多少条记录 @co ...

  5. [转载]彻底卸载oracleXE数据库服务器

    URL:http://www.2cto.com/database/201306/216182.html

  6. Delphi 项目 结构 文件夹 组织

    Delphi Project Structure Folder Organization http://delphi.about.com/od/delphitips2008/qt/project_la ...

  7. vsftp服务器同步文件

    首先vsftp同步文件,并没有好的解决方案,网上有一些软件是可以定时同步文件的,我是用的是linux上的一款工具Rsync 首先先了解一下Rsync与scp的区别:点我 1.安装Rsync 两种安装方 ...

  8. servlet基础(组成与生命周期)

    servlet基础作用:servlet是运行在Web服务器或应用服务器上的程序:担当web浏览器或其他HTTP客户程序发出的请求与HTTP服务器上的数据库或应用程序之间的中间层.1.读取客户程序发送的 ...

  9. Foundation--结构体

    一,NSRange typedef struct _NSRange { NSUInteger location; NSUInteger length; }NSRange; 这个结构体用来表示事物的一个 ...

  10. 小程序和ThinkPHP5结合实现登录状态(含代码)

    本篇文章给大家带来的内容是关于小程序和ThinkPHP5结合实现登录状态(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信小程序中,一般会涉及三种登录方式: 1. 使用微 ...