[英]How to differentiate between an import and a function definition in python?
我正在写一个 python function 来搜索文件列表以查找具有特定装饰器的文件。 我通过以下方式获取模块:
# Load modules from files
loader = machinery.SourceFileLoader(file_name, file_path)
spec = util.spec_from_loader(loader.name, loader)
module = util.module_from_spec(spec)
loader.exec_module(module)
# fetch functions
functions = [function for function in dir(module)]
但我有以下问题:
文件1.py
@dork
def does_something():
pass
文件2.py
from file1 import does_something
因此,当我搜索装饰器时,我得到了两条路径: 'file1.does_something' 'file2.does_something'
当我只想要 file1 的路径时。 有没有办法区分实际功能和导入?
“如何区分 python 中的导入和 function 定义?” 这不是您正在分析的级别的区别。 在两个不同的模块对象的命名空间中存在相同的 function object 。 这是一个需要分析源代码的区别,而不是模块 object。
不过,这是一个潜在的黑客攻击,请检查是否:
func.__module__ == module.__name__
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.