python 中无switch(写了几个函数代替switch)

字典的常用用途之一代替switch

在C/C++/Java语言中,有个很方便的函数switch,比如:

复制代码代码如下:

public class test {  
      
    public static void main(String[] args) {  
        String s = "C";  
        switch (s){  
        case "A":   
            System.out.println("A");  
            break;  
        case "B":  
            System.out.println("B");  
            break;  
        case "C":  
            System.out.println("C");  
            break;  
        default:  
            System.out.println("D");  
        }  
    }  
}

在Python中要实现同样的功能,
方法一,就是用if, else语句来实现,比如:

from __future__ import division  
  
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  
  
def operator(x, y, sep=‘+‘):  
    if   sep == ‘+‘: print add(x, y)  
    elif sep == ‘-‘: print sub(x, y)  
    elif sep == ‘*‘: print mul(x, y)  
    elif sep == ‘/‘: print div(x, y)  
    else: print ‘Something Wrong‘  
  
print __name__  
   
if __name__ == ‘__main__‘:  
    x = int(raw_input("Enter the 1st number: "))  
    y = int(raw_input("Enter the 2nd number: "))  
    s = raw_input("Enter operation here(+ - * /): ")  
    operator(x, y, s)

方法二,用字典来巧妙实现同样的switch的功能,比如:

复制代码代码如下:

#coding=gbk  
  
from __future__ import division  
  
x = int(raw_input("Enter the 1st number: "))  
y = int(raw_input("Enter the 2nd number: "))  
  
def operator(o):  
    dict_oper = {  
        ‘+‘: lambda x, y: x + y,  
        ‘-‘: lambda x, y: x - y,  
        ‘*‘: lambda x, y: x * y,  
        ‘/‘: lambda x, y: x / y}  
    return dict_oper.get(o)(x, y)  
   
if __name__ == ‘__main__‘:    
    o = raw_input("Enter operation here(+ - * /): ")  
    print operator(o)

原文地址:https://www.cnblogs.com/wen-/p/12168757.html

时间: 2024-11-05 20:42:39

python 中无switch(写了几个函数代替switch)的相关文章

关于Python中的类普通继承与super函数继承

关于Python中的类普通继承与super函数继承 1.super只能用于新式类 2.多重继承super可以保公共父类仅被执行一次 一.首先看下普通继承的写法 二.再看看super继承的写法 参考链接:http://blog.csdn.net/lqhbupt/article/details/19631991

python中调用C++写的动态库

一.环境:Windows XP + Python3.2 1. dll对应的源文件(m.cpp): #include <stdio.h> extern "C" { _declspec(dllexport) int add(int a, int b) { return a+b; } _declspec(dllexport) void print_sum(unsigned long ulNum) { while(ulNum != 0) { printf("The ulN

【转】关于python中带下划线的变量和函数 的意义

http://www.blogjava.net/lincode/archive/2011/02/02/343859.html 总结: 变量: 1.  前带_的变量:  标明是一个私有变量, 只用于标明, 外部类还是可以访问到这个变量 2.  前带两个_ ,后带两个_ 的变量:  标明是内置变量, 3.  大写加下划线的变量:  标明是 不会发生改变的全局变量 函数: 1. 前带_的变量: 标明是一个私有函数, 只用于标明, 2.  前带两个_ ,后带两个_ 的函数:  标明是特殊函数 Pytho

python中带有下划线的变量和函数

一.变量 常量:大写加下划线 USER_CONSTANT 对于不会发生改变的全局变量,使用大写加下划线. 私有变量:小写和一个前导下划线 _private_value python中不存在私有变量一说,若是遇到需要保护的变量,使用小写和一个前导下划线.但这只是程序员之间的一个约定,用于警告说明这是一个私有变量,外部类不要去访问它.但实际上,外部类还是可以访问到这个变量. 内置变量:小写,两个前导下划线和两个后置下划线 __class__ 两个前导下划线会导致变量在解释期间被更名.这是为了避免内置

python中 Lambda,Map,Filter,Itertools,Generator高级函数的用法

Lambda 函数 Lambda 函数是一种比较小的匿名函数--匿名是指它实际上没有函数名. Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda 函数,我们根本没为它命名.这是因为 lambda 函数的功能是执行某种简单的表达式或运算,而无需完全定义函数. lambda 函数可以使用任意数量的参数,但表达式只能有一个. x = lambda a, b : a * b print(x(5, 6)) # prints '30' x = lambd

matlab GUI中调取自己写好的.m函数

越来越感觉到matlab是一个功能十分强大的软件,很多功能在matlaib中仅仅使用一两个语句就能实现. 今天记录的是在matlab GUI中调用自己写好的.m文件,一方面能够记录自己的成长,另一方面希望能够帮助需要的同学. 下面是简单的介绍在matlab GUI中调用自己写好的.m文件的基本步骤,一共三步: (1).根据自己的需求新建一个GUI界面.(一般写好m文件后仅需要一个push button即可) (2).新建一个m文件. (3).在GUI中调用m文件. 具体步骤如下: 1.新建GUI

python中的map、filter、reduce函数

三个函数比较类似,都是应用于序列的内置函数.常见的序列包括list.tuple.str. 1.map函数 map函数会根据提供的函数对指定序列做映射. map函数的定义: map(function, sequence[, sequence, ...]) -> list 通过定义可以看到,这个函数的第一个参数是一个函数,剩下的参数是一个或多个序列,返回值是一个集合. function可以理解为是一个一对一或多对一函数,map的作用是以参数序列中的每一个元素调用function函数,返回包含每次fu

python中的字符数字之间的转换函数

int(x [,base ])         将x转换为一个整数 long(x [,base ])        将x转换为一个长整数 float(x )               将x转换到一个浮点数 complex(real [,imag ])  创建一个复数 str(x )                 将对象 x 转换为字符串 repr(x )                将对象 x 转换为表达式字符串 eval(str )              用来计算在字符串中的有效Py

python中带下划线的变量和函数的意义

表示私有属性,只能在自己的实例方法里面访问. self.__name会被编译成self._Bar__name以达到“不被外部访问”的效果 示例如下: 变量: 1.  前带_的变量:  标明是一个私有变量, 只用于标明, 外部类还是可以访问到这个变量 2.  前带两个_ ,后带两个_ 的变量:  标明是内置变量, 3.  大写加下划线的变量:  标明是 不会发生改变的全局变量 函数: 1. 前带_的变量: 标明是一个私有函数, 只用于标明, 2.  前带两个_ ,后带两个_ 的函数:  标明是特殊