微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

重新引用python中的大量函数

如何解决重新引用python中的大量函数

我有一个文件 @Controller class BumblebeeEventController { @PostMapping("/publish") fun eventIntake(@RequestBody @Valid payload: BumblebeeEventList) : ResponseEntity<String>{ return ResponseEntity("Published ${eventList.size} event(s) successfully",HttpStatus.OK) } } class Event(@NotBlank val localTime: String){} class BumblebeeEvent(@NotNull val event: Event) class BumblebeeEventList(@NotNull val events: List<BumblebeeEvent>){} ,它定义了许多有用的函数。对于每个函数,我想创建一个 alias ,当被调用时将给出对函数的引用。像这样:

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 functional.py 获取函数并动态定义一组适合我的目的的新函数

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

有很多函数,我不想把它们都写出来……人们在类似的 questions 中指出,为此目的修改 functional.py 是不好的做法。我的用例相当有限 - 文档方面存在一对一映射(但显然 IDE 无法解决它)。

基本上,我想知道是否有更好的方法来做到这一点!

解决方法

您的问题是否与 this 功能请求有关,尤其是与 this 评论有关?

仅供参考:在 Hydra 1.1 中,instantiate fully supports positional arguments 所以我认为您应该能够直接调用 functools.partial 而无需重新定义它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。