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()
可以优雅地不用,喂猫要用这么庞大的句式呢?
相关文章推荐
- /usr/local/bin/python2.7^M: bad interpreter: 没有那个文件或目录
- 其实C++比Python更需要lambda语法,可惜没有。。。。
- python函数三个知识点,一般书上没有讲。
- 使用python处理没有被Web用到的图片
- fedora 解决 Python.h:没有那个文件或目录 错误的方法
- [Python学习笔记] python中没有swtich
- switch case 相关介绍和没有break 和default 位置乱放分析
- 解决 Python.h:没有那个文件或目录 错误的方法
- 解决Linux下运行Python脚本显示“: 没有那个文件或目录”的问题
- 感觉Ruby没有Python好
- 针对Python 右键没有Edit with IDLE的解决方法
- python2.7中没有zlib库的解决方案(zipimport.ZipImportError: can't decompress data; zlib not available)
- python 3.X 没有cPickle
- Python Shell没有清屏操作吗
- 感觉Ruby没有Python好
- python fork Windows平台下没有这个函数
- [转载] Python没有switch语句的解决方法
- [Python] 找寻A文件中有而B文件中没有的记录
- python 3.X 没有cPickle
- python_为什么没有DO WHILE和switch