Python的'函数指针'的使用

其实Python是不存在指针这一个说法的,更不用说是函数指针了,但是也有相应的处理方式。

我这里使用这一个函数指针,其实也是为了代码的简洁以及扩展性,也就是说还是可以用其他的方式来实现其所需要实现的功能的。

遇到的情况是:
有一个Status状态,当其为1的时候,需要执行函数A, 为2的时候需要执行函数B....如果可取的值很多的时候会比较麻烦。

常用的解决方法就是直接if...elif..elif....使用若干个这样的条件语句进行处理(因为Python也没有switch语句.....)

而遇到这种情况,‘函数指针‘就能够发挥很重要的作用了,可以直接使用一个Map,key就是各种条件取值,value就是对应所需要执行的函数,所以就可以直接通过key进行函数的访问执行了,避免了许多if和else的操作了......

 1 #coding=utf-8
 2
 3 class Interface(object):
 4     def __init__(self):
 5         self.valueFunctions = {
 6                             ‘color‘: self.color_values,
 7                             ‘positions‘: self.positions_values,
 8                             }
 9
10     def color_values(self):
11         print "color"
12
13     def positions_values(self):
14         print "positions"
15
16     def test(self):
17         self.valueFunctions[‘color‘]()
18         self.valueFunctions[‘positions‘]()
19
20 if __name__ == "__main__":
21     go = Interface()
22     go.test()

Python的'函数指针'的使用

时间: 2024-10-16 09:49:41

Python的'函数指针'的使用的相关文章

Python的函数指针

最直观普遍的例子: def foo():        print "foo"    f = foo  f() 函数指针的声明和普通变量的声明基本一致,由于Python是弱类型的脚本语言,因此不需要做大篇幅的声明和限制

Python Cookbook(第3版)中文版:15.12 将函数指针转换为可调用对象

15.12 将函数指针转换为可调用对象? 问题? 你已经获得了一个被编译函数的内存地址,想将它转换成一个Python可调用对象,这样的话你就可以将它作为一个扩展函数使用了. 解决方案? ctypes 模块可被用来创建包装任意内存地址的Python可调用对象.下面的例子演示了怎样获取C函数的原始.底层地址,以及如何将其转换为一个可调用对象: >>> import ctypes >>> lib = ctypes.cdll.LoadLibrary(None) >>

python的函数

一 函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数. 定

Python回调函数用法实例详解

本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 二.什么是回调: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步调用.同步调用

C++手稿:STL中的函数对象与函数指针

先来感受一下C++中的函数对象和函数指针: template<typename T> void printer(int a, int b, T func){ cout<<func(a, b)<<endl; } 在STL中定义了很多像上面这样的模板,这里的T是一个可调用(实现了括号运算符)的东西. 这使得我们在使用模板时可以指定一个计算策略,它可以是函数对象,也可以是函数指针. Less<int>便是一个常见的函数对象,常用来配置容器或算法.<funct

C语言的抽象与函数指针--思想(转)

一.何为抽象? 从小到大,我们接触到的抽象,最熟悉的莫过于数学了.为什么这样说呢? 比如说,在小学的时候,老师总是拿了几个苹果来引诱我们:同学们,这里有几个苹果啊?于是我们流着口水一个个地数,一个苹果,两个苹果,三个苹果,然后说三个苹果!第二回,老师又拿了三只葡萄来引诱我们:同学们,这里有几只葡萄啊?于是我们又一只只数过来:一只葡萄二只葡萄三只葡萄,三只葡萄!第三天,老师又拿了三颗糖果来问我们:同学们,这里有几颗糖果啊?我们又数开了:一颗糖果,两颗糖果,三颗糖果!回答:三颗糖果.  每一次老师拿

Python回调函数用法实例

Python回调函数用法实例 回调函数 “回调函数就是一个通过函数指针调用的函数. 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.” 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 什么是回调 软件模块之间总是存在

Python中的指针:有什么意义?

如果您曾经使用过C或C ++等低级语言,那么您可能已经听说过指针.指针允许您在部分代码中创建高效率.它们也会给初学者带来困惑,并且可能导致各种内存管理错误,即使对于专家也是如此.那么它们在Python中的位置,以及如何在Python中模拟指针? 为什么Python没有指针? 事实是我不知道.Python中的指针本身可以存在吗?可能,但指针似乎违背了Python的禅宗.指针鼓励隐含的变化而不是明确的变化.通常,它们很复杂而不是简单,特别是对于初学者.更糟糕的是,他们乞求用脚射击自己的方法,或做一些

Python open()函数打开文件的模式详解

Python open函数的模式详解 在Python中使用open()函数打开文件,并返回一个文件对象,然后通过文件对象对文件进行读写操作.不同类型的文件需要采用不同的模式来打开,并且采用不同模式打开文件,我们可以进行的操作以及程序运行的结果也是不同的. 打开模式 open()函数完整的语法格式为: open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)函数定义的参数