And*_*ett 45

脚本通常是可直接执行的代码段,由它自己运行.模块通常是一个库,由其他代码片段导入.

请注意,没有内部区别 - 两者都是可执行的和可导入的,尽管库代码在直接执行时通常不会执行任何操作(或者只运行其单元测试),并且导入设计为脚本的代码将导致它执行,因此常见的if __name__ == "__main__"考验.

  • +1:"没有内部区别".这就是你如何使用它. (4认同)
  • 是的.此外,只要我们谈论区别,我会称之为程序(不是脚本),除非它的主要用途是编写其他程序的动作脚本. (3认同)

Dun*_*can 19

任何Python模块都可以作为脚本执行.唯一显着的区别是,当作为模块导入时,文件名用作模块名称的基础,而如果您将其作为脚本执行,则命名模块__main__.

这种区别使得通过在一个受保护的块中包含脚本特定代码来导入时可以有不同的行为if __name__=="__main__".众所周知,当用户尝试以自己的名义导入主模块而不是导入时,会引起混淆__main__.

脚本和模块之间的一个细微差别是,当您导入模块时,系统将尝试使用现有的.pyc文件(前提是它存在并且是最新版本的Python)以及是否必须从a编译. py文件它将尝试保存.pyc文件.当您将.py文件作为脚本运行时,它不会尝试加载以前编译的模块,也不会尝试保存已编译的代码.因此,可能值得保持脚本较小以最小化启动时间.