Python面试题更新 2026-08-05

请解释 Python 语言中变量作用域的概念以及其具体规则。

技术原理Python

考察说明

考察对 Python 变量作用域规则的理解,包括 LEGB 法则及局部、全局、嵌套、内置作用域的区别。

回答思路

  1. 【回答框架 1】变量作用域定义了变量在程序中的可访问范围。Python 中遵循 LEGB 规则,即按照 Local 局部作用域、Enclosing 嵌套作用域、Global 全局作用域、Built-in 内置作用域的顺序查找变量。
  2. 【回答框架 2】局部作用域指函数内部定义的变量,仅在函数内有效;全局作用域是模块层面的变量,函数内可读取但修改需使用 global 声明;嵌套作用域出现在闭包中,内层函数可访问外层函数的变量,修改需使用 nonlocal。
  3. 【回答框架 3】内置作用域是 Python 预定义的名称,如 print、len 等,尽量避免覆盖这些名称。理解作用域有助于避免变量命名冲突、实现正确的闭包行为,并提升代码可读性与健壮性。
  4. 【回答框架 4】在函数内对变量赋值会默认创建局部变量,即使之前有同名全局变量。若需修改全局变量,必须声明 global;在嵌套函数中修改外层变量需声明 nonlocal。
  5. 【关键点 1】Python 变量遵循 LEGB 查找顺序。
  6. 【关键点 2】局部作用域优先级最高,内置作用域最低。
  7. 【关键点 3】函数内修改全局变量需用 global 声明。
  8. 【关键点 4】嵌套函数修改外层变量需用 nonlocal 声明。
  9. 【关键点 5】作用域决定变量的生命周期和可访问性。
  10. 【易错点 1】混淆 global 与 nonlocal 的使用场景。
  11. 【易错点 2】在局部作用域中未声明就使用同名全局变量导致 UnboundLocalError。
  12. 【易错点 3】忽略内置作用域被覆盖的风险。