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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何区分python中的导入和函数定义?相关的知识,希望对你有一定的参考价值。

我正在写一个python函数,它可以在一个文件列表中搜索带有特定装饰符的文件。我把模块抓过来。

# 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)]

但我有以下问题

file1.py

@dork
def does_something():
   pass

file2.py

from file1 import does_something

所以当我搜索装饰符时,我得到两个路径:'file1.does_something''file2.does_something'。

当我只想要file1的路径时。有没有办法区分实际函数和导入?

答案

"如何区分python中的导入和函数定义?" 在你分析这个问题的层面上,这并不是一个区别。该 同功能对象 的名字空间中,存在两个 不同模块对象. 这是一个需要分析的区别。源码,而不是模块对象。

不过这里有一个潜在的黑客,检查是否。

func.__module__ == module.__name__

以上是关于如何区分python中的导入和函数定义?的主要内容,如果未能解决你的问题,请参考以下文章

如何导入python中的模块

average在python中的用法

Python如何调用别人写好的脚本

Python学习(22):模块

VSCode自定义代码片段——声明函数

VSCode自定义代码片段8——声明函数