我有一个文件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
我可以使用inspect
从functional.py
获取函数,并动态定义一组适合我的用途的新函数
但是为什么呢?你可能会问。。。我正在使用一个配置管理器Hydra,其中可以通过指定完全限定名来实例化对象。我想在配置中使用functional.py
中的函数,并让hydra在创建使用该函数的对象时传递对该函数的引用(更多详细信息可以在Hydra documentation中找到)
有很多函数,我不想把它们都写出来。。。人们在类似的{a3}中指出,为此目的修改{
基本上,我想知道是否有更好的方法来做这件事
您的问题是否与this功能请求相关,特别是与this注释相关
仅供参考:在Hydra 1.1中,instantiate fully supports positional arguments因此我认为您应该能够直接调用
functools.partial
,而无需重新定义它相关问题 更多 >
编程相关推荐