导入模块的同时修改模块-python调用百度人脸识别:来一次颜值评分
10.12导入模块的同时修改模块问题你想给某个已存在模块中的函数添加装饰器。不过,前提是这个模块已经被导入并且被使用过。解决方案这里问题的本质就是你想在模块被加载时执行某个动作。可能是你想在一个模块被加载时触发某个回调函数来通知你。这个问题可以使用10.11小节中同样的导入钩子机制来实现。下面是一个可能的方案: # postimport.py importlib import sys from collections import defaultdict _post_import_hooks = defaultdict(list) class PostImportFinder: def __init__(self): self._skip = set() def find_module(self, fullname, path=None): if fullname in self._skip: return None self._skip.add(fullname) return PostImportLoader(self) class PostImportLoader: def __init__(self, finder): self._finder = finder def load_module(self, fullname): importlib.import_module(fullname) module = sys.modules[fullname] for func in _post_import_hooks[fullname]: func(module) self._finder._skip.remove(fullname) return module开课吧- Python3高级教程
2.26MB
文件大小:
评论区