跳转到主要内容

纯Python中的Switch-Case

项目描述

switchcase 在纯Python中实现了简单的Switch-Case结构。

在内部,switch 函数通过简单地返回一个包含匹配函数的长度为1的列表来工作。整个实现只有3行长

from operator import eq
def switch(value, comp=eq):
    return [lambda match: comp(match, value)]

基本用法

>>> from switchcase import switch
>>> def func(x):
...     for case in switch(x):
...         if case(0):
...             print("x was 0")
...             break
...         if case(1):
...             print("x was 1")
...             break
...     else:
...         print("x was unmatched")
>>> func(0)
"x was 0"
>>> func(1)
"x was 1"
>>> func(2)
"x was unmatched"

自定义比较

默认情况下,switch 使用 operator.eq 来比较传递给 switch 的值和随后传递给 case 的值。您可以通过将比较器函数作为第二个参数传递给 switch 来覆盖此行为。

>>> import re
>>> from switchcase import switch
>>> def f(x):
...     out = []
...     for case in switch(x, comp=re.match):
...         if case("foo_bar"):
...             out.append(0)
...             break
...         if case("foo_.*"):
...             out.append(1)
...         if case(".*_bar"):
...             out.append(2)
...         return out
>>> f("foo_bar")
[0]
>>> f("foo_notbar")
[1]
>>> f("notfoo_bar")
[2]
>>> f("foo____bar")
[1, 2]

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

switchcase-1.0.tar.gz (2.2 kB 查看哈希值)

由以下支持