gpt4 book ai didi

python - 如何包装从模块导入的所有函数?

转载 作者:太空狗 更新时间:2023-10-30 01:02:07 35 4
gpt4 key购买 nike

是否可以将代码从导入的模块应用到导入它的模块?例如,我有一个调试模块,其中定义了一些用于调试的装饰器,例如:

def debug_func(f):
def wrapper(*func_args, **func_kwargs):
print(f(*func_args, **func_kwargs))
return wrapper

想法是什么:如果我能的话会很有用

import Debug 

当前模块中的所有函数都将用装饰器包装。可能吗?

最佳答案

在 Debug.py 中:

import functools
from types import FunctionType

def wrap_functions(module_dict):
for k, f in module_dict.items():
if not isinstance(f, FunctionType):
continue
def get_wrapper(f):
def wrapper(*func_args, **func_kwargs):
print(f(*func_args, **func_kwargs))
return functools.wraps(f)(wrapper)
module_dict[k] = get_wrapper(f)

在您希望调试的模块的底部:

import Debug
Debug.wrap_functions(globals())

感谢 (+1) 所有提供建议的评论者。

关于python - 如何包装从模块导入的所有函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19520904/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com