MST

星途 面试题库

面试题:Python模块命名空间与作用域之函数内变量访问

在Python中,假设有如下代码: ```python x = 10 def outer(): x = 20 def inner(): print(x) inner() outer() ``` 请问打印出的 `x` 值是多少?并解释Python查找变量 `x` 的作用域规则。
31.9万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. 打印出的x
    • 打印出的x值是20。
  2. Python查找变量x的作用域规则
    • Python查找变量遵循LEGB规则,即Local(局部作用域)、Enclosing(嵌套作用域,也叫非局部作用域)、Global(全局作用域)、Built - in(内置作用域)。
    • 在上述代码中,当inner函数执行print(x)时:
      • 首先在inner函数的局部作用域查找变量xinner函数内没有定义x,所以查找失败。
      • 接着在嵌套作用域(即outer函数的作用域)查找,outer函数中定义了x且值为20,查找成功,所以打印出20。
      • 如果在outer函数中也没有找到x,则会继续在全局作用域查找,最后在内置作用域查找。