`

Python中switch-case实现

 
阅读更多

 

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

比如PHP中的如下代码:

1
2
3
4
5
6
7
8
9
10
11
switch ($value) {
    case 'a':
        $result = $x * 5;
        break;
    case 'b':
        $result = $x + 7;
        break;
    case 'c':
        $result = $x - 2;
        break;
}

Python的等价实现为:

1
2
3
4
5
result = {
  'a': lambda x: x * 5,
  'b': lambda x: x + 7,
  'c': lambda x: x - 2
}[value](x)

如果是稍微复杂一点的函数,也可以做到,比如我们计算加减乘除,函数定义如下:

1
2
3
4
5
6
7
8
def add(a,b):
    return a + b
def multi(a,b):
    return a* b
def sub(a,b):
    return a - b
def div(a,b):
    return a/ b#b is non-zero

如果是switch实现的话,case(‘操作数’)来判断之行的对应函数。看看Python的实现:

1
2
3
4
5
6
7
8
9
10
11
def calc(type,x,y):
    calculation  = {'+':lambda:add(x,y),
                     '*':lambda:multi(x,y),
                     '-':lambda:sub(x,y),
                     '/':lambda:div(x,y)}
    return calculation[type]()
#calc = {1:lambda:add(x,y)}[value]()
result1 = calc('+',3,6)
result2 = calc('-',3,6)
print result1, result2

这里用的结构如下:

1
2
3
4
message = { 'type1': lambda: func1(some_data),
            'type2': lambda: func2(other_data),
          }
return message[type]()

还有更加复杂的就是自定义一个Switch类了,可以参考http://code.activestate.com/recipes/410692-readable-switch-construction-without-lambdas-or-di/

 

载录地址:http://www.codecho.com/switch-case-in-python/

分享到:
评论

相关推荐

    Python-switchcase用纯Python实现的SwitchCase结构

    在"switchcase-master"这个项目中,开发者可能通过不同的设计模式或者高级技巧进一步优化了这种实现,比如支持更复杂的匹配规则,提高可读性和可维护性。如果你对该项目感兴趣,可以下载并查看源代码,学习其中的...

    python中Switch/Case实现的示例代码

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

    Python 实现switch case功能

    Python 实现switch case功能 在 Python 中,没有内置的 switch-case 语句,但你可以使用字典和函数来模拟它。 在这个示例中,switch_case 函数接受一个参数 argument,根据传入的参数值,从字典 switcher 中获取相应...

    python官方3.10.0a4-amd64版本exe安装包

    Python 3.10引入了"match-cases"语句,这是对模式匹配功能的实现,类似于其他编程语言中的switch-case结构。这将使得代码更加简洁,提高可读性,特别是处理枚举类型或解析数据时。 另一个重要的更新是增强型赋值...

    PyPI 官网下载 | switchcase-1.0.tar.gz

    《PyPI官网下载 | switchcase-1.0.tar.gz - Python库详解》 在Python编程中,我们常常需要根据不同的条件执行不同的代码块,这在其他一些编程语言中可以通过switch-case语句实现。然而,Python并没有内置的switch-...

    python-3.10.1-amd64.rar

    - **匹配语句(Match Case)**:Python 3.10 添加了类似switch-case的结构,提供了更优雅的模式匹配能力,如`match value:`。 - **注解类型改进**:类型注解更加完善,支持类型变量和泛型类,增强了类型检查的能力...

    python-3.10.1-amd64.exe.7z

    2. **匹配语句**(Match-Cases):类似switch-case语句,提供了更优雅的模式匹配能力。 3. **生成器增强**:引入了`yield from`表达式,使得嵌套生成器更加简洁。 4. **新的切片操作**:允许在切片中使用`@`符号。 5...

    python3.11最新版本下载,内含linux/windwos/macos安装包

    6. **语法变化**:引入了新的语法特性,如`match`语句,这是模式匹配功能的一部分,它类似于其他语言中的switch-case结构,提供了更灵活的条件判断。 7. **内存管理**:Python 3.11改进了内存分配策略,尤其是对于...

    python-3.10.0-amd64.zip

    - 引入了新的匹配语句(match-case),提供了一种更优雅的方式来处理模式匹配,类似于其他语言的switch-case语句。 - 添加了`await`表达式在函数注解中,允许在类型提示中表示协程返回值。 - `walrus`操作符(:=...

    python-3.10.7-amd64.zip

    - **匹配语句(Match Statement)**:这是一种新的控制流语句,用于模式匹配,类似switch-case语句,但更强大,支持复杂的数据结构。 2. **性能提升**: - **类型提示优化**:通过更好的类型检查,Python 3.10能...

    python 3.10.2 windows 64位版本

    这是一种新的语法结构,允许程序员以更简洁、直观的方式处理数据类型的匹配,类似于switch-case语句,但更加强大且灵活。这为编写更加优雅和可读的代码提供了可能。 此外,Python 3.10还引入了新的操作符`|`(管道...

    python-3.10.2-amd64.exe

    2. **匹配语句**(Match Case):Python 3.10 添加了一个新的控制流构造,即`match`语句,它类似于其他语言中的模式匹配,提高了代码的可读性和简洁性,常用于switch-case类似的功能。 3. **异步生成器**:在Python...

    PyPI 官网下载 | django-switch-templatetag-2.0.0.tar.gz

    1. **源代码**:主要为Python文件,实现了`django-switch-templatetag`的核心功能,包括模板标签的定义、开关逻辑的实现等。 2. **文档**:可能包含README文件,用于介绍库的使用方法、安装步骤以及注意事项。 3. **...

    Python Switch Case三种实现方法代码实例

    在Python编程语言中,由于其语法特性,没有像C、Java等语言中的`switch-case`语句。然而,可以通过不同的方式模拟实现类似的功能。这里我们将详细介绍两种常见的模拟`switch-case`的方法。 ### 方法一:使用字典...

    python-3.10.0-amd64.rar

    在Python 3.10.0中,最重要的新特性之一是引入了结构化模式匹配(亦称作match-case或switch语句),这使得代码可以更优雅地处理不同情况。结构化模式匹配允许开发者通过模式来匹配变量的值,从而简化复杂的数据处理...

    Python字典映射代替C语言switch-case

    然后,我记得C语言里有一个default,当case没有对应的取值时,就会去执行default。如果按照我们这里,设day=6时,是会报错的。所以我们要想一种办法,当字典没有对应的key时,也可以处理。 进阶操作: switcher={ ...

    14.2 用字典映像代替switch case语句|Pythonic与Python杂记|Python3.8入门 & 进阶 & 原生爬虫实战完全解读

    14.2_用字典映射代替switch_case语句|Pythonic与Python杂记|Python3.8入门_&_进阶_&_原

    在python里如何实现switch函数的功能

    另一种在 Python 中实现 switch 语句的方式是使用字典。可以将每个条件给定一个相应的操作,然后根据传入的参数在字典中查找对应的操作并执行。以下是示例: ```python def switch_case(argument): switch = { 1: ...

Global site tag (gtag.js) - Google Analytics