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函数返回。

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

  • 相关阅读:
    Linux_C smsh1
    ACM&排序问题,操作符重载
    ACM&找双亲,并查集
    struct dirent/DIR
    关于win8如何查找出当前的密钥
    php之留言板
    php之include&require
    工作中的问题 和 所用到的知识点
    jQuery.extend 和 jQuery.fn.extend
    JavaScript 字符串函数 之查找字符方法(一)
  • 原文地址:https://www.cnblogs.com/rprp789/p/9531920.html
Copyright © 2011-2022 走看看