1. 程式人生 > 實用技巧 >python 程式碼執行順序

python 程式碼執行順序

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這條列印語句。