• 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这条打印语句。
  • 相关阅读:
    Ubuntu 12.04 root账户开启及密码重设
    Notepad++ 开启「切分窗口」同时检视、比对两份文件
    第11章 Java异常与异常处理
    第10章 Java类的三大特性之一:多态
    第9章 Java类的三大特性之一:继承
    第8章 Java类的三大特性之一:封装
    第7章 类和对象
    java 经典程序 100 例
    第6章 Java类中的方法
    第5章 Java数组
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13468706.html
Copyright © 2020-2023  润新知