翻过高山走不出你
该__main__.py文件是什么?在创建Python模块时,通常使模块在main作为程序的入口点运行时执行某些功能(通常包含在函数中)。这通常通过放置在大多数Python文件底部的以下常用习惯来完成:if __name__ == '__main__':
# execute only if run as the entry point into the program
main()你可以用Python获得相同的语义__main__.py。这是一个linux shell提示符,$如果你在Windows上没有Bash(或另一个Posix shell),只需创建这些文件,demo/____.py其中包含EOFs:之间的内容:$ mkdir demo
$ cat > demo/__init__.py <
print('main executed')EOF
$ cat > demo/__main__.py <
main()EOF(在Posix / Bash shell中,您可以通过在每个cat命令的末尾输入+ ,文件结尾字符来完成上述操作而不使用<< EOFs和结束EOFs )CtrlD现在:$ python demo
demo/__main__.py executed
demo/__init__.py executed
main executed您可以从文档中获得此信息。该文件说:__main__ - 顶级脚本环境'__main__'是顶级代码执行的范围的名称。模块的__name__设置等于'__main__'从标准输入,脚本或交互式提示中读取的内容。模块可以通过检查它自己来检测它是否在主作用域中运行__name__,这允许在模块作为脚本运行时有条件地执行模块中的常用习惯用法,或者python -m在导入时使用但不是if __name__ == '__main__':
# execute only if run as a script
main()对于包,通过包含一个__main__.py模块可以实现相同的效果, 模块的内容将在模块运行时执行-m。拉链您也可以将它打包到一个文件中并从命令行运行它 - 但请注意,压缩包不能执行子包或子模块作为入口点:$ python -m zipfile -c demo.zip demo/*$ python demo.zip
demo/__main__.py executed
demo/__init__.py executed
main() executed