我想在Python中编写一个函数,它根据输入索引的值返回不同的固定值.
在其他语言中,我会使用switch或case声明,但Python似乎没有switch声明.在这种情况下,推荐的Python解决方案是什么?
最近,我在网上看到一些关于如何在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)