07.python函数作用域global、nonlocal、LEGB

总结,global的使用原则在于明确变量所属的作用域,而非直接在局部作用域中定义。闭包概念出现在嵌套函数中,内层函数引用了外层函数的自由变量,形成闭包。Python中的闭包实现方式包括使用global或nonlocal关键字。非局部变量使用nonlocal关键字,用于引用上级作用域中的变量,而非当前作用域。例如,count是外层...
07.python函数作用域global、nonlocal、LEGB
一个标识符的作用域,指的是该标识符的可见范围,通常指变量的作用域。例如,变量x在函数内部不可见,会抛出异常(NameError: name 'x' is not defined),因为函数具有其独立的作用域,变量x被限制在该作用域内。

在函数嵌套结构中,内部函数inner无法在外部直接访问,会抛出NameError异常,因为它在外部作用域不可见。其实,inner是outer函数内部定义的变量。

当探讨嵌套结构的作用域时,可以观察到在不同层级作用域中的变量可见性。通过对比执行结果,我们可以清晰地看到变量的作用域范围。

对于一个赋值语句问题,我们观察到函数2返回错误指向x += 1。问题在于,函数内部的局部变量x与外部全局变量x混淆,导致错误。解决此常见问题的关键在于明确变量的作用域。

使用global语句定义的变量,即使在foo函数中声明,也能指示当前函数作用域使用外部全局作用域中的x。在foo中再写x = 10并不会定义局部变量x,而是保持全局变量的引用。因此,使用global将foo中的x转变为全局变量。

总结,global的使用原则在于明确变量所属的作用域,而非直接在局部作用域中定义。闭包概念出现在嵌套函数中,内层函数引用了外层函数的自由变量,形成闭包。Python中的闭包实现方式包括使用global或nonlocal关键字。

非局部变量使用nonlocal关键字,用于引用上级作用域中的变量,而非当前作用域。例如,count是外层函数的局部变量,被内部函数引用,通过nonlocal声明count在上级作用域而非当前作用域中定义。

函数销毁的机制在于定义函数生成函数对象,其引用计数管理其生命周期。使用del语句或覆盖同名标识符均可减少引用计数。Python程序结束时,所有对象销毁,函数对象也不例外,其销毁取决于引用计数是否减为0。

变量名解析遵循LEGB原则,即Local、Enclosing、Global和Built-in,表示查找变量的优先顺序。这一原则确保了在不同作用域中正确地解析变量名。2024-11-14
mengvlog 阅读 10 次 更新于 2025-07-19 13:23:39 我来答关注问题0
  • 一个标识符的作用域,指的是该标识符的可见范围,通常指变量的作用域。例如,变量x在函数内部不可见,会抛出异常(NameError: name 'x' is not defined),因为函数具有其独立的作用域,变量x被限制在该作用域内。在函数嵌套结构中,内部函数inner无法在外部直接访问,会抛出NameError异常,因为它在外...

  •  翡希信息咨询 Python变量作用域

    局部作用域:在函数或方法内部声明的变量,其作用域仅限于该函数或方法内部。局部变量在函数执行完毕后会被销毁。嵌套的父级作用域:当一个函数嵌套在另一个函数中时,内部函数可以访问外部函数的变量,这些变量的作用域即为嵌套的父级作用域。在Python 3中,可以通过nonlocal关键字来修改嵌套作用域中的...

  • Python中的变量作用域分为四种情况:局部作用域(Local,L), 嵌套的父级作用域(Enclosing,E),全局作用域(Global,G)和内置作用域(Built-in,B)。变量的查找优先级依次为作用域局部>外层作用域>当前模块中的全局>python内置作用域。在Python中,作用域的产生主要由模块、类和函数引入新的作用域...

  • 5、函数作用域 在Python中,变量的作用域是由函数定义的位置决定的。如果变量在函数外部定义,则在整个程序中都可以访问。如果变量在函数内部定义,则只能在该函数中访问。另外,Python也支持嵌套函数和闭包,在这种情况下,内部函数可以访问外部函数的变量。

  • (1)函数作用域:从函数调用开始至函数执行完成,返回给调用者后,在执行过程中开辟的空间会自动释放,也就是说函数执行完成后,函数体内部通过赋值等方式修改变量的值不会保留,会随着返回给调用者后,开辟的空间会自动释放。(2)方法作用域:通过实例化的对象进行方法的调用,调用后开辟的空间不会释放...

檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部