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