【发布时间】:2023-02-07 05:55:52
【问题描述】:
有什么方法可以检查某个模块是从交互式 shell 导入还是从 Python 中的脚本/另一个模块导入?我正在处理一个模块,并且需要基于它从 shell 使用或在脚本中使用的不同行为(要采取的操作,即关闭一些 midi 端口等需要此信息)。
【问题讨论】:
标签: python-3.x
有什么方法可以检查某个模块是从交互式 shell 导入还是从 Python 中的脚本/另一个模块导入?我正在处理一个模块,并且需要基于它从 shell 使用或在脚本中使用的不同行为(要采取的操作,即关闭一些 midi 端口等需要此信息)。
【问题讨论】:
标签: python-3.x
是的,您可以使用内置的检查是否正在导入模块姓名属性。如果模块作为主程序运行,姓名将被设置为“主要的“。如果模块是从另一个模块或脚本导入的,姓名将被设置为模块的名称。
例如:
# file: my_module.py
print("Running as the main program" if __name__ == "__main__" else "Being imported")
当您将上述代码作为脚本运行时,输出将作为主程序运行。如果您从另一个模块导入 my_module,输出将是 Being imported。
【讨论】: