python函数作用的描述 Python函数作用域示例详解 python中函数作
目录
- 一、LEGB 制度
- 二、影响域实例
- 2.1 局部影响域(Local)
- 2.2 闭包影响域(Enclosing)
- 2.3 全局影响域(Global)
- 2.4 内置影响域(Built &8211; in)
- 2.5 影响域的嵌套和查找顺序
一、LEGB 制度
LEGB 制度是 Python 查找变量的顺序,即当在代码中引用一个变量时,Python 会按照下面内容顺序在不同的影响域中查找该变量:
- Local(局部影响域):函数内部定义的变量和参数,只在函数内部可见。
- Enclosing(闭包影响域):嵌套函数中,内部函数可以访问外部函数的局部变量,这些外部函数的局部变量所在的影响域就是闭包影响域。
- Global(全局影响域):在模块级别定义的变量和函数,在整个模块内都可以访问。
- Built &8211; in(内置影响域):Python 内置的函数和变量,如
print
、len
等,在任何地方都可以访问。
二、影响域实例
2.1 局部影响域(Local)
局部影响域是指函数内部的影响域,函数内部定义的变量和参数只能在该函数内部访问。
def test_function(): 局部变量 local_variable = 10 print(local_variable)test_function() 下面内容代码会报错,由于 local_variable 是局部变量,在函数外部无法访问 print(local_variable)
2.2 闭包影响域(Enclosing)
当一个函数嵌套在另一个函数内部,并且内部函数引用了外部函数的局部变量时,就形成了闭包。内部函数可以访问外部函数的局部变量,即使外部函数已经执行完毕。
def outer_function(): 外部函数的局部变量 enclosing_variable = 20 def inner_function(): 内部函数可以访问外部函数的局部变量 print(enclosing_variable + 1) return inner_functionclosure = outer_function()closure()
2.3 全局影响域(Global)
全局影响域是指在模块级别定义的变量和函数,在整个模块内都可以访问。可以使用 global
关键字在函数内部修改全局变量。
全局变量def modify_global(): global global_variable 申明修改全局变量 global_variable = 50 函数内部修改全局变量 return global_variableprint(global_variable)print(modify_global())
2.4 内置影响域(Built &8211; in)
内置影响域包含了 Python 内置的函数和变量,如 print
、len
、int
等,这些函数和变量在任何地方都可以直接使用。
使用内置函数 lenmy_list = [1, 2, 3]length = len(my_list)print(length)
2.5 影响域的嵌套和查找顺序
当在代码中引用一个变量时,Python 会按照 LEGB 制度从内到外依次查找该变量。如果在局部影响域中找到了该变量,则使用该变量;如果没有找到,则继续在闭包影响域中查找,以此类推。
全局变量x = 10def outer(): 闭包影响域变量 x = 20 def inner(): 局部变量 x = 30 print(x) 输出 30 inner() print(x) 输出 20outer()print(x) 输出 10
- 在上述代码中,
inner
函数内部的print(x)
会先在局部影响域中查找x
,找到局部变量x = 30
并输出; outer
函数内部的print(x)
会在闭包影响域中查找x
,输出闭包影响域变量x = 20
;
- 最终,在全局影响域中调用
print(x)
会输出全局变量x = 10
。
到此这篇关于Pythonpython系列之函数影响域的文章就介绍到这了,更多相关python函数影响域内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
无论兄弟们可能感兴趣的文章:
- Python中的函数影响域
- 基于Python函数的影响域制度和闭包(详解)
- 详解Python函数影响域的LEGB顺序
- 深入解析Python中函数的参数与影响域
- Python函数命名空间和影响域(Local与Global)
- python函数的影响域及关键字详解