Python Switch 重复调用小问题

栏目: Python · 发布时间: 6年前

内容简介:大家都知道Python 中没有Switch 关键词,如果写一堆if-elif-else 非常不美观,通常的做法是使用字典,今天遇到一个小问题,如下:写完测试一下,发现字典里面每个函数都会被执行一遍,有点蒙,不过马上就明白了,但是一时不知道该如何解决,Google 下找到了解决方式:改一下:

大家都知道 Python 中没有Switch 关键词,如果写一堆if-elif-else 非常不美观,通常的做法是使用字典,今天遇到一个小问题,如下:

class Recource(object):
   def do(self, provider, action):
       return {
         'aliyun':{
             'create': self.__create__(),
             'update': self.__update__(),
             ...
             },
         'aws': ...
        }[provider][action]

写完测试一下,发现字典里面每个函数都会被执行一遍,有点蒙,不过马上就明白了,但是一时不知道该如何解决,Google 下找到了解决方式: Pythonic switch within class ,

改一下:

class Recource(object):
   def do(self, provider, action):
       return {
         'aliyun':{
-            'create': self.__create__(),
-            'update': self.__update__(),
+            'create': lambda: self.__create__(),
+            'update': lambda: self.__update__(),
             ...
             },
         'aws': ...
-       }[provider][action]
+       }[provider][action]()

原来如此,简单快捷,学习了,又一次面向Stack Overflow 编程 :P。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

ACM程序设计

ACM程序设计

曾棕根 / 北京大学 / 2011-4 / 34.00元

《ACM程序设计(第2版)》详细讲解了ACM国际大学生程序设计竞赛(ACM/ICPC)编程、调试方法,以及提高时间、空间性能的策略,并充分利用了C++泛型编程的高效率、规范化的特性,全部采用C++泛型编程。第1章讲解了ACM程序设计入门知识;第2章讲解了C++泛型编程的容器、迭代器和常用算法;第3章讲解了ACM程序设计的基本编程技巧;第4章讲解了50道原版ACM竞赛题的解题思路,并配有C++泛型编......一起来看看 《ACM程序设计》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具