zoukankan      html  css  js  c++  java
  • chapter4.3、函数执行流程

    函数执行流程

    def foo1(b,b1=3):
        print("foo1 called",b,b1)
        
    def foo2(c):
        foo3(c)
        print("foo2 called",c)
        
    def foo3(d):
        print("foo3 called",d)
        
    def main():
        print("main called")
        foo1(100,101)
        foo2(300)
        print("main ending")
    main()

    对于以上函数,执行流程为

    1、在全局帧中生成foo1,foo2,foo3,main函数对象

    2、调用main函数

    3、main函数查找print函数压栈,,将常量main called字符串常量压栈,调用print函数,弹出常量,执行后打印与栈无关

    4、main 函数在全局中查找函数foo1,将函数压栈,再将参数常量100,101压栈,调用函数foo1,创建栈帧。print函数压栈,字符串和变量压栈,调用函数print,弹出栈顶的数据,返回值。

    5、main函数继续执行,全局查找foo2,将foo2压栈,再将常量压栈,调用foo2,创建栈帧。foo3压栈,变量c引用压栈,调用foo3,创建栈帧,foo3调用print函数,然后返回。foo2继续调用,print压栈,常量压栈,弹出执行。foo2执行完,main函数弹出foo2。

    6、main函数继续执行,将print执行,弹出print函数,main函数返回。

    栈和线程相关,调用同一个函数,不同的线程同时运行互不干涉

  • 相关阅读:
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告
    第八周课程总结&实验报告
    第七周课程总结&实验报告
    第六周课程总结&实验报告
    课程总结
    第十四周
    第十三周
    第十二周
  • 原文地址:https://www.cnblogs.com/rprp789/p/9531920.html
Copyright © 2011-2022 走看看