首页 > 解决方案 > 如何检查函数是在 IDLE 中运行还是从另一个函数/模块运行

问题描述

我知道你可以用模块做到这一点:

if __name__ == '__main__':
    ...

并且仅当模块本身在 IDLE 中运行时才运行,而不是在模块被导入时运行。但是,我想知道是否有办法检查一个函数是否在 IDLE 接口中手动运行,或者是否从另一个函数/模块调用它。如果有一种方法可以从函数内部执行此操作,那么您将如何执行此操作?

标签: pythonfunctionmain

解决方案


您可以查看inspect.stack()并尝试提取您感兴趣的信息;例如,我可以看到在 IDLE 中至少有 2 个帧往往来自idlelib/run.py.

以下功能应该可以满足您的需求,但您也可以对其进行修改以满足您的需求。

import inspect
def is_inside_idle():
    return any(frame for frame in inspect.stack()
               if frame.filename.endswith('idlelib/run.py'))

推荐阅读