python如何控制作用域

python如何控制作用域

作者:Rhett Bai发布时间:2026-01-07阅读时长:0 分钟阅读次数:40

用户关注问题

Q
Python中局部变量和全局变量的区别是什么?

我在Python代码中经常听到局部变量和全局变量,二者有什么不同?它们分别在哪些作用域中有效?

A

了解局部变量与全局变量的区别

局部变量是在函数内部定义并只在函数内部有效的变量。全局变量是在函数外部定义,可以被整个模块中的所有代码访问。Python中,局部变量只在定义它的函数内可见,而全局变量可以在多个函数之间共享。如果需要在函数内部修改全局变量,需使用global关键字进行声明。

Q
如何在函数内部修改模块级别的变量?

当我想在函数中修改一个模块级别的变量值时,该如何正确操作?

A

使用global关键字修改全局变量

在函数内部,如果直接赋值给一个与全局变量同名的变量,Python会新建一个局部变量。为了修改模块级的全局变量,应在函数内使用global关键字声明该变量。这样,函数内部的赋值操作会影响全局变量本身,而非创建局部副本。

Q
Python中变量的LEGB作用域规则是怎样的?

我看到Python官方文档提到LEGB规则,这是指什么?变量查找顺序是怎样的?

A

理解Python变量查找的LEGB规则

LEGB代表Local(局部),Enclosing(闭包函数外层函数),Global(全局)和Built-in(内建)作用域。Python查找变量时,会先在局部作用域查找,如果找不到则到任何包含该函数的嵌套函数作用域,再接着查找全局作用域,最后查找内建作用域。这个顺序确保代码对变量访问的正确性和层次性。