如何区分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__

给TA打赏
共{{data.count}}人
人已打赏
未分类

Angular项目忘记密码发送邮件链接在Chrome浏览器中无法使用(仅第一次,第二次如期使用)。

2022-9-8 13:01:25

未分类

在MVC3 Action中使用Response.End。

2022-9-8 13:12:38

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索