我创建了一个名为barcode.py
的程序,它有4个函数和主代码。
当我使用
将其导入另一个程序时import barcode
它运行程序条形码并询问主程序中的输入。我很惊讶,即使我还没有调用函数并且只导入了barcode
有人可以解释为什么会这样,以及如何在不运行文件barcode.py
中的主代码的情况下导入我的代码?
答案 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
你将没有输出。