我制作了一个名为barcode.py的程序,该程序具有4个功能和主要代码。

当我通过使用将其导入另一个程序时

import barcode


它运行程序条形码,并像在主程序中一样要求输入。令我惊讶的是,即使我还没有调用函数并且只导入了barcode

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

最佳答案

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

Python documentation on importing modules告诉您:


  模块可以包含可执行语句以及函数
  定义。这些语句旨在初始化模块。
  仅在第一次遇到模块名称时执行它们
  在导入语句中。 (如果执行了文件,它们也会运行
  作为脚本。)


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

如果希望将脚本放在模块文件中,如果调用是独立执行的(例如通过barcode.py执行),而不是在被import调用时执行的脚本,请使用Python module documentation中的以下模式:

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


您将不会获得任何输出。

关于python - 导入模块时如何防止内联代码运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28961048/

10-12 22:50
查看更多