为了账号安全,请及时绑定邮箱和手机立即绑定

Python函数指针

/ 猿问

Python函数指针

万千封印 2019-12-26 09:17:31

我将函数名称存储在这样的变量中:


myvar = 'mypackage.mymodule.myfunction'

我现在想这样调用myfunction


myvar(parameter1, parameter2)

最简单的方法是什么?


查看完整描述

3 回答

?
FFIVE

funcdict = {

  'mypackage.mymodule.myfunction': mypackage.mymodule.myfunction,

    ....

}


funcdict[myvar](parameter1, parameter2)


查看完整回答
反对 2019-12-26
?
POPMUISE

能够只存储函数本身会更好,因为它们是python中的一流对象。


import mypackage


myfunc = mypackage.mymodule.myfunction

myfunc(parameter1, parameter2)

但是,如果必须动态导入软件包,则可以通过以下方法实现:


mypackage = __import__('mypackage')

mymodule = getattr(mypackage, 'mymodule')

myfunction = getattr(mymodule, 'myfunction')


myfunction(parameter1, parameter2)

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


查看完整回答
反对 2019-12-26
?
ITMISS

最简单的


eval(myvar)(parameter1, parameter2)

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


尽管这很好用,但是您将有很多人告诉您这是“不安全的”或“安全风险”。


查看完整回答
反对 2019-12-26

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信