您的位置:首页 > 编程语言 > Python开发

Python 喂猫没有switch case

2016-09-25 15:42 323 查看

1. 开篇

学习编程语言的时候,我会特别关注它的历史。因为它一定是一个演变 的结果,而那些高深的理论,对不起,大多数后面的总结。翻译成中文后,大概只有大学老师会觉得浑然天成吧。

原文链接:https://docs.python.org/3/faq/design.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