Python 函数指针

87 投票
8 回答
172687 浏览
提问于 2025-04-15 19:24

我有一个函数的名字保存在一个变量里,像这样:

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)

撰写回答