相关疑难解决方法(0)

Python中的switch语句的替换?

我想在Python中编写一个函数,它根据输入索引的值返回不同的固定值.

在其他语言中,我会使用switchcase声明,但Python似乎没有switch声明.在这种情况下,推荐的Python解决方案是什么?

python switch-statement

1719
推荐指数
32
解决办法
149万
查看次数

Python中的Switch/Case实现有什么价值吗?

最近,我在网上看到一些关于如何在Python中没有好的"switch/case"等级的讨论.我意识到有几种方法可以做类似的事情 - 一些是lambda,一些是字典.关于替代方案,还有其他StackOverflow讨论.甚至有两个PEP(PEP 0275和PEP 3103)讨论(并拒绝)将开关/案例集成到语言中.

我想出了我认为做切换/案例的优雅方式.

最终看起来像这样:

from switch_case import switch, case         # note the import style

x = 42
switch(x)                                    # note the switch statement
if case(1):                                  # note the case statement
    print(1)
if case(2):
    print(2)
if case():                                   # note the case with no args
    print("Some number besides 1 or 2")
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:这是一个有价值的创作吗?你对改善它有什么建议吗?

我把包含文件放在github上,以及大量的例子.(我认为整个包含文件大约有50个可执行行,但我有1500行示例和文档.)我是否过度设计了这个东西,浪费了大量时间,还是有人觉得这个值得?

编辑:

试图解释为什么这与其他方法不同:
1)多个路径是可能的(执行两个或更多个案例),这在字典方法中更难.
2)可以检查除"equals"以外的比较(例如case(less_than(1000)).
3)比字典方法更可读,并且可能如果/ elif方法
4)可以跟踪有多少True案例.
5)可以限制允许的真实案例数量.(即执行前2个真实情况......)
6)允许默认情况.

这是一个更详细的例子:

from switch_case import switch, case, between

x=12
switch(x, limit=1)                # only execute the FIRST …
Run Code Online (Sandbox Code Playgroud)

python case switch-statement

3
推荐指数
3
解决办法
2753
查看次数

标签 统计

python ×2

switch-statement ×2

case ×1