购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5-4 函数调用与栈运作

计算机语言在执行函数调用时,内部其实是使用栈在运作,下列将以实例做说明。

程序实例ch5_4.py: 由函数调用了解程序语言的运作。

执行结果

上述是一个简单的调用函数程序,接下来我们看这个程序如何应用栈运作。程序第14行 调用welcome( ) 时,计算机内部会以栈方式配置一个内存空间。

当有函数调用时,计算机会将调用的函数名称与所有相关的变量存储在内存内,然后进入welcome( )函数。当执行第9行时会输出“ 洪锦魁 欢迎进入明志科技大学系统 ”。当执行第10行时 调用system( ) ,计算机内部会以栈方式配置一个内存空间,同时堆放在前一次调用的welcome( )内存上方。

程序接着执行第6行,输出“ 洪锦魁 欢迎进入校友会系统 ”,然后system( )函数执行结束,此时程序返回welcome( )函数,同时将上方的内存移除,回到welcome( )函数。

上图有一个很重要的概念是,welcome( )函数执行一半时,工作先暂停但是内存数据仍然保留,先去执行另一个函数system( )。当system( )工作结束时,可以回到welcome( )函数先前暂停的位置继续往下执行。接着执行第11行输出“ 使用明志科技大学系统很棒 ”。然后执行第12行调用bye( )函数,这个调用没有传递变量,栈内存如下所示:

系统会将bye( )函数新增在栈上方,然后执行第3行输出“ 下回见! ”,接着bye( )函数执行结束。此时程序返回welcome( )函数,同时将上方的内存移除,回到welcome( )函数。

从调用bye( )到返回welcome( )函数后,由于welcome( )函数也执行结束,所以整个程序就算执行结束了。 Mu3LXuMfYwRmRtjJFqIl7UiaomRub/wJazCMguspZfdGE9j1tyzV+rz+pvWuumVd

点击中间区域
呼出菜单
上一章
目录
下一章
×