引言
- Python代码
print('hellow word')
-
代码执行顺序
- 我们可以看到Python仅仅用了一行代码即可完成其他编程语言多行的输出Hello,World
- 其他的编程语言像C/C++/C#/JAVA 等 都会有一个main主函数的框架 所有的代码都是在该框架下运行的,有且只能有一个main主函数
- 代码从 main() 函数开始执行
-
但是:
-
Python不需要Main函数也能执行
-
Python不同于其他编程语言,Python是解释性语言,不需要先编译成二进制语言,再执行。
-
Python是动态,是从上至下逐行解释运行。只要有正确的代码,python便可以执行该文件
-
-
程序入口:
-
很多的的编程语言像C/C++/C#/JAVA 等 都会有一个main主函数 作为程序入口,程序从
main()主函数的第一句代码开始执行,直到main函数的最后一句代码程序运行结束
-
而Python 因为它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,
而是动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口,直到脚本
的最后一行。
-
案例
1、写一个测试模块(test.py)
def addfunc(a, b):
return a + b
print('test:a+b的计算结果是:', addfunc(2, 3))
2、再写一个新的mode.py文件来调用上方的模块
import test
print("调用test模块执行的结果是:",test.addfunc(3,3))
-
运行test.py结果如图所示:
-
运行mode.py文件
- 可以看到test.py中的测试代码也被执行了一遍
-
显然,当运行mode.py后第一句结果并不是调用者所需要的,为了解决这一问题,Python提供了一个系统变量: __ name __
3、这时我们修改一下test.py的代码
-
test.py
def addfunc(a, b): return a + b print('test:a+b的计算结果是:', addfunc(2, 3)) if __name__ == '__main__': print('test:1+1的计算结果:',addfunc(4, 4))
-
再次运行test.py
-
程序运行正常
-
-
再次运行mode.py
-
程序运行正常
-
详解
-
一个python的文件的两种使用方法:
-
直接作为脚本运行
-
import到其他的python脚本(.py文件)中导入被作为模块调用执行
-
-
if name == ‘main’: 的作用就是控制这两种情况执行代码的过程
-
在if name == ‘main’: 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中作为模块使用是不会被执行的。
-
简单来说:if __ name __ == ’ __ main __'的意思是:
-
__当.py文件被直接运行时,if __ name __== ’ __ __main __'之下的代码块将被运行
-
__当.py文件以模块形式被导入时,if __ _name __== ’ __ main __'之下的代码块不被运行。
-
__ name __
代码实现方法:
- 那么if __ name __ == ’ __ main __’ 这句代码具体是怎么实现的呢?
__name__
是系统内置变量,用于表示当前模块的名字,即所在文件名
1 、当Pyhon模块直接运行时,__name__的值为“*main*”
2 、当模块被导入到其他文件作为import模块使用时,
- 该模块的name __为模块本身的名字 __
- 比如上方的test.py 作为模块被 mode.py引用时
- test.py的 __ name __值就是 test
- 也就是说:__name__有2个取值:
- 当模块是被调用执行的,取值为模块的名字;
- 当模块是直接执行的,则该变量取值为:__ main __
总结
-
if name == ‘main’: 这句话的核心无非就是在判断该程序文件是否作为主程序入口。
-
如果直接运行该程序文件,该文件作为主程序入口,name == ‘main’ 主程序 。
-
如果在运行主程序的时候调用其他程序文件,其他程序入口name != ‘main’ 自然就不等于main主程序 。
-