繁体   English   中英

如何区分python中的导入和function定义?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM