在python中重新引用大量函数
我有一个文件在python中重新引用大量函数,python,decorator,hydra-python,Python,Decorator,Hydra Python,我有一个文件functional.py,它定义了许多有用的函数。对于每个函数,我想创建一个别名,当调用该别名时,它将提供对函数的引用。大概是这样的: foo/functional.py def fun1(a): return a def fun2(a): return a+1 ... from inspect import getmembers, isfunction from . import functional for (name, fun) in getme
functional.py
,它定义了许多有用的函数。对于每个函数,我想创建一个别名,当调用该别名时,它将提供对函数的引用。大概是这样的:
foo/functional.py
def fun1(a):
return a
def fun2(a):
return a+1
...
from inspect import getmembers, isfunction
from . import functional
for (name, fun) in getmembers(functional, isfunction):
dun = lambda f=fun: f
globals()[name] = dun
foo/\uuuuu init\uuuuuu.py
def fun1(a):
return a
def fun2(a):
return a+1
...
from inspect import getmembers, isfunction
from . import functional
for (name, fun) in getmembers(functional, isfunction):
dun = lambda f=fun: f
globals()[name] = dun
我可以使用inspect
从functional.py
获取函数,并动态定义一组适合我用途的新函数
但是为什么呢?你可能会问。。。我使用的配置管理器可以通过指定完全限定名来实例化对象。我想在配置中使用functional.py
中的函数,并让hydra在创建使用该函数的对象时传递对该函数的引用(更多详细信息可在中找到)
有很多函数,我不想把它们都写出来。。。人们在类似的文章中指出,为此修改globals()
是一种不好的做法。我的用例是相当受限的——文档方面有一个一一映射(但显然IDE无法解决它)
基本上,我想知道是否有更好的方法来做这件事 您的问题是否与功能请求相关,尤其是与评论相关
仅供参考:在Hydra 1.1中,因此我认为您应该能够直接调用
functools.partial
,而无需重新定义它。您的问题是否与功能请求相关,尤其是与评论相关
仅供参考:在Hydra 1.1中,因此我认为您应该能够直接调用
functools.partial
,而无需重新定义它。是的,非常感谢您为此添加了一个利用位置参数支持的简单示例:是的,非常感谢您为此添加了一个利用位置参数支持的简单示例: