Python 喂猫没有switch case

1. 开篇

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

原文链接:https://docs.python.org/3/faq/design.html
后面会开始记录学习笔记,我尝试去对比我所熟悉的语言,去总结点滴的理解。

2. 正题:喂猫没有switch-case

将switch case中的试用场景进行分类:

  1. 够简单,简单到只是几个赋值语句;
  2. 够复杂,复杂到调用完全不相干的方法/函数;
  3. 既不复杂又不简单;

如果你是个老司机,很容易看不惯switch-case里面有一段能飞起的代码。复杂逻辑老老实实封个函数呗,顾及下用mac编程(装逼)的呗。第3中情况可以向第2中情况演变。

针对几种语言,来点比较:

  1. C,只有赋值的情况,用switch-case就是很优雅的,因为1. list/map在C中,就是自己需要实现的,也会降低代码的可读性;2 . 没有反射机制,用函数指针并不能避开switch-case;
  2. JAVA,只有赋值的情况,map可以轻松应付;对于方法,确实也可以通过反射避开。调用方式并不优雅,你需要拼装参数列表,需要去调invoke;
  3. 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()

可以优雅地不用,喂猫要用这么庞大的句式呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值