【问题标题】:How to check if function is being run in IDLE or from another function/module如何检查函数是在 IDLE 中运行还是从另一个函数/模块运行
【发布时间】:2020-07-12 12:56:53
【问题描述】:

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

if __name__ == '__main__':
    ...

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

【问题讨论】:

  • 您想检查它是否从 IDLE 的 REPL 运行?
  • 尝试阅读有关抓取运行时堆栈的教程。

标签: python function main


【解决方案1】:

你可以看一下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'))

【讨论】:

  • 感谢您的回答,不幸的是,如果它是在文本编辑器中创建的,则从 IDLE 运行时它会返回 False。如果它是在 IDLE 中创建的,即使从另一个函数运行,它也会返回 True。
猜你喜欢
  • 2015-11-12
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多