__main__ — Top-level script environment

'__main__'是顶级代码执行的作用域的名字。

当一个模块从标准input, 一个脚本文件,或一个交互命令read读入时,它的__name__等于'__main__'。

程序入口

C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始。同样,Java 和 C# 必须要有一个包含 Main 方法的主类来作为程序入口。

#include <stdio.h>

int main()
{
/* 我的第一个 C 程序 */
printf("Hello, World! \n"); return ;
}

而 Python 则有不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口。

一个 Python 源码文件除了可以被直接运行外,还可以作为模块(也就是库)被导入。不管是导入还是直接运行,最顶层的代码都会被运行(Python 用缩进来区分代码层次)。而实际上在导入的时候,有一部分代码我们是不希望被运行的。

例如,下面的例子。

#linshi.py
PI = 3.14 def main():
print ("PI:", PI)
main()
#example.py
from linshi import PI def calc_round_area(radius):
return PI * (radius ** 2) def main():
print ("round area: ", calc_round_area(2)) main()

执行python3 example.py后在输出:

PI: 3.14
round area: 12.56

这是因为linshi.py中有main()这行代码。实际上不希望运行linshi.py中的main函数。修改linshi.py:

PI = 3.14

def main():
print ("PI:", PI) # main() 加上一个判断:
if __name__ == '__main__':
main()

解释:

example.py从命令行read时,__name__就等于'__main__'。

linshi.py作为模块导入时,__name__则被赋值为模块自身的名字,即linshi。

Python -m 参数解析

https://a7744hsc.github.io/python/2018/05/03/Run-python-script.html

最新文章

  1. c# 学习心得(函数方法类)
  2. 9.8---硬币问题(CC150)
  3. Webpack使用教程五(Babel)
  4. Shooting Algorithm
  5. 【转】【WPF】TemplateBinding和Binding的区别
  6. 三层架构和MVC模式
  7. add some template for ec-final
  8. leetcode Database3
  9. hibernate一些方法
  10. 0,null,empty,空,false,isset
  11. Android学习总结(十五) ———— Notification(状态栏通知)基本用法
  12. RPC漏洞
  13. (原创)Maven+Spring+CXF+Tomcat7 简单例子实现webservice
  14. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-&gt;新增记录SQL执行过程
  15. [物理学与PDEs]第1章第7节 媒质中的 Maxwell 方程组 7.3 媒质中电磁场量的表示
  16. face++静态库转为动态库之二
  17. CentOS7时间设置问题
  18. callee和斐波那契数列
  19. 如何在framegroup各个frame和window之间共享数据
  20. cat &lt;&lt;-EOF &gt;&amp;2

热门文章

  1. 架构模式: API网关
  2. 软件测试第2周个人作业:WordCount编码测试
  3. C#枚举扩展方法,获取枚举值的描述值以及获取一个枚举类下面所有的元素
  4. fedora使用
  5. 【转帖】知乎管理华为鸿蒙OS的介绍2
  6. 「java.util.concurrent并发包」之 ReentrantReadWriteLock
  7. 图的DFS与BFS遍历
  8. 向量运算(lua,三维) 点乘、叉乘、模、夹角
  9. Struts框架的使用初步
  10. 手把手教你搭建FastDFS集群(中)