python教程—Python覆盖嵌套函数中的变量-Python实用宝典

python教程—Python覆盖嵌套函数中的变量

假设我有以下python代码:我希望调用outer()来返回“String被嵌套函数更改了!”,但我得到“”。我的结论是Python认为string = "string被嵌套函数更改了!"这一行是inner()的一个新变量的声明。我的问题是:如何告诉Python它应该使用outer()字符串?我不能使用全局关键字,因为字符串不是全局的,它只存在于外部范围中。想法吗?

假设我有以下Python代码:

    def outer(): string = "" def inner(): string = "String was changed by a nested function!" inner() return string

我想调用outer()来返回“String被嵌套函数更改!”,但我得到“”。我的结论是Python认为string = "string被嵌套函数更改了!"这一行是inner()的一个新变量的声明。我的问题是:如何告诉Python它应该使用outer()字符串?我不能使用全局关键字,因为字符串不是全局的,它只存在于外部范围中。想法吗?

回答

Python 3。,您可以使用nonlocal关键字:

    def outer(): string = "" def inner(): nonlocal string string = "String was changed by a nested function!" inner() return string

在Python中2。x,你可以使用一个只有一个元素的列表并覆盖这个元素:

    def outer(): string = [""] def inner(): string[0] = "String was changed by a nested function!" inner() return string[0]

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论