Python函数返回与局部作用域销毁相关问题咨询
关于Python函数局部作用域销毁与“执行返回”的疑问解答
首先明确:“程序执行返回”指的是函数完成自身所有代码的执行(或者遇到return语句主动退出),退出当前函数的过程。而返回的位置,确实就是调用这个函数的语句的下一行。
拿你给出的代码来拆解整个执行流程,就能看得更清楚:
def spam(): eggs = 99 bacon() print(eggs) def bacon(): ham = 101 eggs = 0 spam()
- 当你运行
spam()时,程序进入spam的局部作用域,创建了局部变量eggs并赋值为99。 - 接着执行
bacon(),程序切换到bacon的局部作用域,创建了ham=101和属于bacon的局部变量eggs=0。 bacon里的所有代码执行完毕后,就触发了“执行返回”:bacon的局部作用域被立即销毁,里面的ham和eggs都不复存在,程序回到spam里调用bacon()的下一行——也就是print(eggs)这行。- 此时打印的是
spam作用域里的eggs=99,因为bacon的局部变量已经随着作用域销毁了。 - 最后
spam的代码执行完,它的局部作用域也会被销毁。
简单总结:函数只要干完自己的活(不管是自然跑完还是用return提前结束),就会“返回”到调用它的地方,同时自己的局部作用域直接被销毁。
内容的提问来源于stack exchange,提问作者Freebird
相关产品推荐
相关产品推荐

