Python 中的递归函数在每次调用自身时都会创建一个新的命名空间吗?


是的,函数调用(任何函数调用,不仅仅是递归调用)新创建一个命名空间。但如果作为参数传递,OBJECTS将按引用传递。

因此,新命名空间会获取此引用的自己的副本,但它仍然引用调用函数中相同的对象,如果您更改该对象的内容,您会注意到调用函数中的更改。

具体来说,每当解释器遇到一个函数调用时,它都会创建一个框架对象,此对象会被推入框架栈。每次创建框架时,该框架都会赋予其自己的私有命名空间,其中重新定义框架中的每个变量。

更新于: 2019 年 7 月 30 日

132 次浏览

开启您的 职业

完成本课程,获得认证

开始学习
广告
© . All rights reserved.