虽然我们有各种流程判断、循环、跳转、控制、中断等等,但从根本上程序还是逐行顺序执行的。 Python 代码在执行过程中,遵循下面的基本原则:
if __name__ == '__main__'
很多时候,我们经常在 python 程序中看到这么一行语句,这里简要解释一下: 首先,__name__是所有模块都会有的一个内置属性,一个模块的__name__值取决于你如何调用模块。假如你有一个test.py文件,如果在a.py文件中使用import导入这个模块import test.py,那么 test.py 模块的__name__属性的值就是 test,不带路径或者文件扩展名。但是很多时候,模块或者说脚本会像一个标准的程序样直接运行,也就是类似 python test.py这种方式,在这种情况下, name 的值将是一个特别缺省值"main"。根据上面的特性,可以用 if name == 'main’来判断是否是在直接运行该 py 文件! 如果是,那么 if 代码块下的语句就会被执行,如果不是,就不执行。该方法常用于对模块进行测试和调试,区分直接运行和被导入两种情况的不同执行方式!
import os
print('<[1]> time module start') #1
class ClassOne():
print('<[2]> ClassOne body') #2
def __init__(self):
print('<[3]> ClassOne.__init__') #7
def __del__(self):
print('<[4]> ClassOne.__del__') #14
def method_x(self):
print('<[5]> ClassOne.method_x') #8
class ClassTwo(object):
print('<[6]> ClassTwo body') #3
class ClassThree():
print('<[7]> ClassThree body') #4
def method_y(self):
print('<[8]> ClassThree.method_y') #10 #12
class ClassFour(ClassThree):
print('<[9]> ClassFour body') #5
def func():
print(" function func")
if __name__ == '__main__':
print('<[11]> ClassOne tests', 30 * '.') #6
one = ClassOne()
one.method_x()
print('<[12]> ClassThree tests', 30 * '.') #9
three = ClassThree()
three.method_y()
print('<[13]> ClassFour tests', 30 * '.') #11
four = ClassFour()
four.method_y()
print('<[14]> evaltime module end') #13