时间:2021-05-23
相信玩过几天 python 的小伙伴都知道,python 里并没有 switch 关键字实现,那这是为什么呢?
根据官方说法 PEP 3103 - A Switch/Case Statement.
实现 switch case 需要被判断的变量是可哈希和可比较的,这与 python 提倡的灵活性有冲突。在实现上优化不好做,可能到最后最差的情况汇编出来和 if else 组是一样的,所以 python 没有支持
但是没有 switch 关键字,不代表不能实现类似效果,接下来通过几个小程序来说明此类问题
我们通过最常用的 if else 判断来实现一段代码
def matching_if(type): if type == 0: return '优惠1块钱' elif type == 1: return '优惠10块钱' elif type == 2: return '优惠100块钱' return '无优惠'if __name__ == '__main__': print(matching_if(1)) print(matching_if(999))执行结果如下:
'''
打印输出:
优惠10块钱
无优惠
'''
可以使用字典实现 switch case,这种方式易维护,同时也能够减少代码量。如下是使用字典模拟的 switch case 实现:
def matching_dict(type): types = { 0: '优惠1块钱', 1: '优惠10块钱', 2: '优惠100块钱' } return types.get(type, '无优惠')if __name__ == '__main__': print(matching_dict(1)) print(matching_dict(999))代码从整体上看着简洁了很多,那还有没有别的方式呢?
函数判断从代码数量来说并无优势,优势点在于其灵活性,如果根据不同的类型作出大量操作,函数运算无疑是最优的方式
def one(): return '优惠1块钱'def two(): return '优惠10块钱'def three(): return '优惠100块钱'def default(): return '无优惠'def matching_method(type): types = { 0: one, 1: two, 2: three } method = types.get(type, default) return method()if __name__ == '__main__': print(matching_method(1)) print(matching_method(999))优雅的代码是程序员的追求之一,作者本人也有一定程度的代码洁癖,所以涉及此类应用,会选择第二种 dict 字典类型应用
这里推出一款 lambda 配合 dict 字典的方式,可以对运算条件作出更为精准的计算
def matching_lambda(type): matching_dict = lambda x: { x == 0: '优惠1块钱', x == 1: '优惠10块钱', x == 2: '优惠100块钱' } return matching_dict(type)[True]if __name__ == '__main__': print(matching_lambda(1)) print(matching_lambda(2))由于作者水平有限, 欢迎大家能够反馈指正文章中错误不正确的地方, 感谢 🙏
到此这篇关于python switch 实现多分支选择功能的文章就介绍到这了,更多相关python switch 多分支实现内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Python当中并无switch语句,本文研究的主要是通过字典实现switch语句的功能,具体如下。switch语句用于编写多分支结构的程序,类似与if….el
前言在很多时候,我们代码中会有很多分支,而且分支下面的代码又有一些复杂的逻辑,相信很多人都喜欢用if-else/switch-case去实现。做的不好的会直接把
多选择结构switch语句在java中为多路分支选择流程专门提供了switch语句,switch语句根据一个表达式的值,选择运行多个操作中的一个。他的语法形式如
习惯了C#的语法,遇到多分支调用的情况,除了最简单的if-else,那么就是switch-case了,所以使用JavaScript的时候就很容易会写出下面这样的
前言今天在学习python的过程中,发现python没有switch这个语法。于是就想在python中如何才能实现这个功能呢?正文本文中我们对switch的使用