在python中重新引用大量函数

2024-06-06 20:56:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件functional.py,它定义了许多有用的函数。对于每个函数,我想创建一个别名,调用该别名时将给出对函数的引用。大概是这样的:

foo/functional.py

def fun1(a):
    return a

def fun2(a):
    return a+1

...

foo/__init__.py


from inspect import getmembers, isfunction  
from . import functional

for (name, fun) in getmembers(functional, isfunction):
    dun = lambda f=fun: f
    globals()[name] = dun
>> bar.fun1()(1)
>> 1
>> bar.fun2()(1)
>> 2

我可以使用inspectfunctional.py获取函数,并动态定义一组适合我的用途的新函数

但是为什么呢?你可能会问。。。我正在使用一个配置管理器Hydra,其中可以通过指定完全限定名来实例化对象。我想在配置中使用functional.py中的函数,并让hydra在创建使用该函数的对象时传递对该函数的引用(更多详细信息可以在Hydra documentation中找到)

有很多函数,我不想把它们都写出来。。。人们在类似的{a3}中指出,为此目的修改{}是不好的做法。我的用例是相当受限的——文档方面有一个一一映射(但显然IDE无法解决它)

基本上,我想知道是否有更好的方法来做这件事


Tags: 函数namefrompyimportreturn定义foo