栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python中的局部函数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python中的局部函数

我相信您将其视为“可变性”问题是正确的。尽管您发布的代码确实引发了“ UnboundLocalError”,但以下代码却没有:

def outer():    a = 0    def inner():        print a    inner()outer()

Python不允许您从内部作用域的外部作用域重新分配变量的值(除非您使用关键字“ global”,在这种情况下不适用)。

请查看此Python 2.6.2文档中“类”文档的底部:

9.2。Python范围和命名空间

[…]如果声明一个全局名称,则所有引用和赋值将直接转到包含模块全局名称的中间范围。否则,在最内层作用域之外找到的所有变量都是只读的(尝试写入此类变量只会在最内层作用域内创建一个新的局部变量,而使名称相同的外层变量保持不变)。

您的“ UnboundLocalError”是因为您的函数实际上是在声明一个名为“ a”的新变量,然后立即尝试对其执行“ + =”操作,但这失败了,因为“
a”还没有值。(将“ a + = 1”视为“ a = a + 1”,如果未定义“ a”,则会看到问题)。

通常,如果您要修改“ a”,人们通常会绕过它的方法是使用可变类型来传递“ a”(例如列表或字典)。您可以通过可变类型的内容修改“
a”(正如您在使用此设置的测试中可能注意到的那样)。

希望有帮助!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668972.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号