Python中实现结构相似的函数调用方法

yipeiwu_com7年前Python基础

python的dict用起来很方便,可以自定义key值,并通过下标访问,示例如下:

复制代码 代码如下:

>>> d = {'key1':'value1',
... 'key2':'value2',
... 'key3':'value3'}
>>> print d['key2']
value2
>>>

lambda表达式也是很实用的东东,示例如下:
复制代码 代码如下:

>>> f = lambda x : x**2
>>> print f(2)
4
>>>

两者结合可以实现结构相似的函数调用,使用起来很方便,示例如下:

示例一:不带参数 

复制代码 代码如下:

#! /usr/bin/python
 
msgCtrl = "1 : pause\n2 : stop\n3 : restart\nother to quit\n"
 
ctrlMap = {
'1':    lambda : doPause(),
'2':    lambda : doStop(),
'3':    lambda : doRestart()}
 
def doPause():
        print 'do pause'
 
def doStop():
        print 'do stop'
 
def doRestart():
        print 'do restart'
 
if __name__ == '__main__':
        while True:
                print msgCtrl
                cmdCtrl = raw_input('Input : ')
                if not ctrlMap.has_key(cmdCtrl):break
                ctrlMap[cmdCtrl]()

示例二:带参数

复制代码 代码如下:

#! /usr/bin/python
 
msgCtrl = "1 : +\n2 : -\n3 : *\nother to quit\n"
 
ctrlMap = {
'1':    lambda x,y : x+y,
'2':    lambda x,y : x-y,
'3':    lambda x,y : x*y}
 
 
if __name__ == '__main__':
        while True:
                print msgCtrl
                cmdCtrl = raw_input('Input : ')
                if not ctrlMap.has_key(cmdCtrl):break
                print ctrlMap[cmdCtrl](10,2),"\n"

相关文章

Python3中简单的文件操作及两个简单小实例分享

前言 首先介绍一下什么叫做相对路径和绝对路径,我们程序狗家族想必都是懂这个的,但是难免会有童鞋忘记。所以码出来供大家快速回忆一下。 相对路径 相对路径是相对于文件当前的工作路径而言的 绝...

python+opencv 读取文件夹下的所有图像并批量保存ROI的方法

如下所示: import cv2 import os import numpy as np root_path = "I:/Images/2017_08_03/" dir =...

浅谈python 导入模块和解决文件句柄找不到问题

如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失。因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作为输入执...

Django中使用Celery的教程详解

Django中使用Celery的教程详解

Django教程 Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django是一个开放源代码的Web...

Python读取视频的两种方法(imageio和cv2)

用python读取视频有两种主要方法,大家可依据自己的需求进行使用。 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用。 import p...