Python 函数指针
我有一个函数的名字保存在一个变量里,像这样:
myvar = 'mypackage.mymodule.myfunction'
现在我想像这样调用这个函数:
myvar(parameter1, parameter2)
有什么简单的方法可以做到这一点吗?
8 个回答
19
def f(a,b):
return a+b
xx = 'f'
print eval('%s(%s,%s)'%(xx,2,3))
5
输出
48
在Python中,函数可以像普通的对象一样被存储,这样做会更方便。
import mypackage
myfunc = mypackage.mymodule.myfunction
myfunc(parameter1, parameter2)
不过,如果你需要动态导入一个包,你可以通过以下方式来实现:
mypackage = __import__('mypackage')
mymodule = getattr(mypackage, 'mymodule')
myfunction = getattr(mymodule, 'myfunction')
myfunction(parameter1, parameter2)
不过要记住,所有这些操作都是针对你当前所在的范围。如果你不以某种方式保存它们,当你离开这个范围时,它们可能就不见了。
130
在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络。为了让程序能够理解这些数据,我们通常需要将它们转换成一种程序能处理的格式。
比如说,如果你从一个文件里读取了一些文本数据,程序可能需要把这些文本转换成数字、日期或者其他类型的数据,这样才能进行计算或者比较。
这个过程就叫做“数据转换”。在这个过程中,我们可能会用到一些工具或者库,这些工具可以帮助我们更轻松地完成转换工作。
总之,数据转换是编程中一个很重要的步骤,它能确保我们的程序能够正确地理解和处理输入的数据。
funcdict = {
'mypackage.mymodule.myfunction': mypackage.mymodule.myfunction,
....
}
funcdict[myvar](parameter1, parameter2)