我正在尝试用功能以及包含在另一个格式的文件中的功能名称填充字典:
{'fn_a':函数fn_a位于0x000002239BDCB510,'fn_b':函数fn_b位于0x000002239BDCB268}。
我目前正在尝试使用装饰器执行此操作,因此,当导入包含函数(definitions.py)的文件时,将按以下方式填充字典。问题是导入完成后便会清除字典。
definitions.py:
from main import formatter
@formatter
def fn_a(arg):
return arg
@formatter
def fn_b(arg):
return arg
main.py:
available_functions = {}
def formatter(func):
# work out function name and write to func_name
func_name=str(func).split()[1]
available_functions[func_name] = func
return func
import definitions
模块导入完成后,如何在字典中填充值?
答案 0 :(得分:0)
我能够使用FunctionType模块解决问题,以从导入的模块返回可用功能。在上面指定的条件下,它不能解决问题,但是可以解决问题。
from types import FunctionType
available_functions = {}
def formatter(func):
# work out function name and write to func_name
#global available_functions
func_name=str(func).split()[1]
available_functions[func_name] = func
return func
import definitions
funcs=[getattr(definitions, a) for a in dir(definitions)
if isinstance(getattr(definitions, a), FunctionType)]
for i in funcs:
formatter(i)