Python函数指针

我有一个函数名存储在这样的变量中:

我有一个函数名存储在这样的变量中:

myvar = 'mypackage.mymodule.myfunction'

我现在想像这样调用 myfunction

myvar(parameter1, parameter2)

什么是最简单的方法来实现这一目标?

123
funcdict = {
  'mypackage.mymodule.myfunction': mypackage.mymodule.myfunction,
    ....
}
funcdict[myvar](parameter1, parameter2)
43

能够存储函数本身要好得多,因为它们是 python 中的一流对象。

import mypackage
myfunc = mypackage.mymodule.myfunction
myfunc(parameter1, parameter2)

但是,如果你必须动态导入包,那么你可以通过:

mypackage = __import__('mypackage')
mymodule = getattr(mypackage, 'mymodule')
myfunction = getattr(mymodule, 'myfunction')
myfunction(parameter1, parameter2)

但是请记住,所有这些工作都适用于您当前所在的范围。如果您不以某种方式坚持使用它们,那么如果您离开本地范围,就不能指望它们留在周围。

18
def f(a,b):
    return a+b
xx = 'f'
print eval('%s(%s,%s)'%(xx,2,3))
OUTPUT
 5
10

最简单

eval(myvar)(parameter1, parameter2)

你没有一个函数“指针”。你有一个函数“名称”。

虽然这很有效,但你会有很多人告诉你这是“不安全的”或“安全风险”。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(655)
在打字稿中一直使用.tsx而不是.ts有什么缺点吗
上一篇
使用 python进行梯度计算
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(80条)