Python代碼在執行過程中,遵循下面的基本原則:
- 普通語句,直接執行;
- 碰到函數,將函數體載入內存,並不直接執行
- 碰到類,執行類內部的普通語句,但是類的方法只載入,不執行
- 碰到if、for等控制語句,按相應控制流程執行
- 碰到@,break,continue等,按規定語法執行
- 碰到函數、方法調用等,轉而執行函數內部代碼,執行完畢繼續執行原有順序代碼
import os # 1
print('<[1]> time module start') # 2
class ClassOne():
print('<[2]> ClassOne body') # 3
def __init__(self): # 10
print('<[3]> ClassOne.__init__')
def __del__(self):
print('<[4]> ClassOne.__del__') # 101
def method_x(self): # 12
print('<[5]> ClassOne.method_x')
class ClassTwo(object):
print('<[6]> ClassTwo body') # 4
class ClassThree():
print('<[7]> ClassThree body') # 5
def method_y(self): # 16
print('<[8]> ClassThree.method_y')
class ClassFour(ClassThree):
print('<[9]> ClassFour body') # 6
def func():
print("<func> function func")
if __name__ == '__main__': # 7
print('<[11]> ClassOne tests', 30 * '.') # 8
one = ClassOne() # 9
one.method_x() # 11
print('<[12]> ClassThree tests', 30 * '.') # 13
three = ClassThree() # 14
three.method_y() # 15
print('<[13]> ClassFour tests', 30 * '.') # 17
four = ClassFour()
four.method_y()
print('<[14]> evaltime module end') # 100
- 首先執行#1的import語句
- 執行#2的打印語句
- ClassOne、ClassThree和ClassFour的類定義執行過程中,分別打印#3、#4、#5、#6四句話,但是其中的方法並不執行,僅僅是載入內存
- 碰到#7的if name == 'main':,判斷為True,於是執行if內部的代碼
- 執行#8的print語句
- 執行#9,實例化一個ClassOne的對象
- 執行#10的初始化方法,打印一條語句
- 返回執行#11的menthod_x調用
- 返回類的定義體,找到#12,執行方法,打印語句
- 再返回#13處,打印
- 執行#14的實例化
- ClassThree沒有自定義初始化方法,接着執行#15
- 回到類里找到#16的方法,執行打印語句
- 執行#17
- ......后面不再詳述
- 執行完最后的#100的打印語句后,按理說程序應該終止退出了,但由於ClassOne這個類定義了__del__方法,還要在最后執行它內部的代碼#101這條打印語句。