MST

星途 面试题库

面试题:Python变量作用域之闭包变量访问问题

在Python中,假设有如下代码: ```python def outer(): x = 10 def inner(): print(x) return inner func = outer() func() ``` 这里inner函数能够访问到outer函数中的变量`x`,这体现了Python变量作用域的什么特性?如果在`inner`函数中试图修改`x`的值为20,并再次打印,代码该如何修改?修改后会有什么结果?
34.4万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. 体现的特性:这体现了Python变量作用域的闭包特性。闭包是指在一个函数内部定义的函数可以访问其外部函数的变量,即使外部函数已经执行完毕。

  2. 修改代码

def outer():
    x = 10
    def inner():
        nonlocal x
        x = 20
        print(x)
    return inner
func = outer()
func()
  1. 修改后的结果:运行上述修改后的代码,会输出 20。使用 nonlocal 关键字声明 x 表示 x 不是一个新的局部变量,而是引用外部(但非全局)作用域中的 x 变量,这样就可以在 inner 函数中修改 outer 函数中的 x 变量的值。