【发布时间】:2011-03-01 01:56:09
【问题描述】:
认为标题总结了问题:-)
【问题讨论】:
认为标题总结了问题:-)
【问题讨论】:
脚本通常是一段直接可执行的代码,它自己运行。模块通常是一个库,由其他代码段导入。
请注意,没有内部区别 -- 两者都是可执行和可导入的,尽管库代码在直接执行和导入设计用于是一个脚本将导致它执行,因此常见的if __name__ == "__main__" 测试。
【讨论】:
任何 Python 模块都可以作为脚本执行。唯一显着的区别是,当作为模块导入时,文件名用作模块名称的基础,而如果将其作为脚本执行,则模块命名为 __main__。
通过将特定于脚本的代码包含在由if __name__=="__main__" 保护的块中,这种区别使得导入时可能具有不同的行为。众所周知,当用户尝试以自己的名称导入主模块而不是导入 __main__ 时,这会引起混淆。
脚本和模块之间的一个小区别是,当您导入模块时,系统将尝试使用现有的 .pyc 文件(前提是它存在并且是最新的并且适用于该版本的 Python),并且如果它必须编译从 .py 文件中,它将尝试保存 .pyc 文件。当您将 .py 文件作为脚本运行时,它不会尝试加载以前编译的模块,也不会尝试保存已编译的代码。出于这个原因,可能值得让脚本保持较小以最大限度地缩短启动时间。
【讨论】: