如何在导入模块时阻止内联代码运行?

时间:2015-03-10 10:17:19

标签: python module python-import

我创建了一个名为barcode.py的程序,它有4个函数和主代码。

当我使用

将其导入另一个程序时
import barcode

它运行程序条形码并询问主程序中的输入。我很惊讶,即使我还没有调用函数并且只导入了barcode

,这种情况也会发生

有人可以解释为什么会这样,以及如何在不运行文件barcode.py中的主代码的情况下导入我的代码?

1 个答案:

答案 0 :(得分:2)

首先,您的问题不是IDLE特定的。

Python documentation on importing modules告诉你:

  

模块可以包含可执行语句和函数   定义。这些语句用于初始化模块。   它们仅在第一次遇到模块名称时执行   在进口声明中。 (如果文件被执行,它们也会运行   作为一个脚本。)

这意味着当你import一个模块时,它将被运行一次,就像你直接将它作为一个脚本调用一样(例如在你的例子中在命令提示符下键入barcode.py

如果您希望在调用的模块文件中执行脚本是独立的(例如barcode.py)而不是import,则使用以下模式,{{3} }:

if __name__ == "__main__":
    print("I've been run as a script")

检查此功能的示例

您可以在命令提示符处检查这是否有效 - 如果您将上面的脚本保存为例如modulefile.py并运行

$ python modulefile.py

你会看到

  

I've been run as a script

如果您启动python并输入

>>> import modulefile

你将没有输出。