登录
首页 >  文章 >  python教程

Python函数作用域入门技巧

时间:2026-02-13 13:37:49 342浏览 收藏

积累知识,胜过积蓄金银!毕竟在文章开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Python函数作用域快速掌握技巧》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

LEGB规则指Python按局部(L)、外层函数(E)、全局(G)、内置(B)顺序查找变量,如函数中先查局部变量,再向外逐层查找,直到内置作用域。

如何快速掌握Python函数的作用域?

理解Python函数的作用域,关键在于搞清变量在不同层级的可见性和查找规则。掌握“LEGB”原则就能快速理清逻辑。

什么是LEGB规则?

Python按照特定顺序查找变量,这个顺序就是LEGB:

  • L(Local):函数内部的局部作用域
  • E(Enclosing):外层函数的作用域(闭包)
  • G(Global):模块级别的全局作用域
  • B(Built-in):内置作用域(如print、len等)

Python从内到外依次查找,一旦找到就停止。比如在函数中使用一个变量,先看是否是局部变量,再看外层函数有没有定义,然后看全局,最后查内置。

局部与全局变量的区别

在函数内部赋值的变量默认是局部的,不会影响全局同名变量。

x = 10
def func():
  x = 20
  print(x)
func() # 输出 20
print(x) # 输出 10

如果想在函数里修改全局变量,必须用global关键字声明。

x = 10
def func():
  global x
  x = 20
func()
print(x) # 输出 20

嵌套函数与nonlocal关键字

当函数嵌套时,内层函数可以读取外层函数的变量,但不能直接修改。要修改需使用nonlocal

def outer():
  x = 10
  def inner():
    nonlocal x
    x = 20
  inner()
  print(x)
outer() # 输出 20

没有nonlocal,inner函数中的x会被当成新的局部变量,外层x不会变。

实际练习建议

最快掌握的方法是动手写几个嵌套函数,故意不加global或nonlocal,观察输出结果。再逐步加上关键字对比变化。常见误区包括:

  • 误以为函数内部能直接改全局变量
  • 在if或for块中定义变量,误以为有独立作用域(其实没有)
  • 闭包中引用外层变量时,未理解延迟绑定问题

基本上就这些。多试几次,作用域的逻辑自然就清晰了。

今天关于《Python函数作用域入门技巧》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于Python,函数作用域的内容请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>