Python 喂猫没有switch case"/>
Python 喂猫没有switch case
1. 开篇
学习编程语言的时候,我会特别关注它的历史。因为它一定是一个演变 的结果,而那些高深的理论,对不起,大多数后面的总结。翻译成中文后,大概只有大学老师会觉得浑然天成吧。
原文链接:.html
后面会开始记录学习笔记,我尝试去对比我所熟悉的语言,去总结点滴的理解。
2. 正题:喂猫没有switch-case
将switch case中的试用场景进行分类:
- 够简单,简单到只是几个赋值语句;
- 够复杂,复杂到调用完全不相干的方法/函数;
- 既不复杂又不简单;
如果你是个老司机,很容易看不惯switch-case里面有一段能飞起的代码。复杂逻辑老老实实封个函数呗,顾及下用mac编程(装逼)的呗。第3中情况可以向第2中情况演变。
针对几种语言,来点比较:
- C,只有赋值的情况,用switch-case就是很优雅的,因为1. list/map在C中,就是自己需要实现的,也会降低代码的可读性;2 . 没有反射机制,用函数指针并不能避开switch-case;
- JAVA,只有赋值的情况,map可以轻松应付;对于方法,确实也可以通过反射避开。调用方式并不优雅,你需要拼装参数列表,需要去调invoke;
Python, 只有赋值的情况,Python的dictionary 有map等同的功能。Python可以用反射,根据名称获取函数。但是显然比java来得要优雅。抄段代码过来:
def visit_a(self, ...): ... def dispatch(self, value): method_name = 'visit_' + str(value) method = getattr(self, method_name) method()
可以优雅地不用,喂猫要用这么庞大的句式呢?
更多推荐
Python 喂猫没有switch case
发布评论