本文主要是介绍Python函数作用域示例详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣...
一、LEGB 规则
LEGB 规则是 python 查找变量的顺序,即当在代码中引用一个变量时,Python 会按照以下顺序在不同的作用域中查找该变量:
- Local(局部作用域):函数内部定义的变量和参数,只在函数内部可见。
- Enclosing(闭包作用域):嵌套函数中,内部函数js可以访问外部函数的局部变量,这些外部函数的局部变量所在的作用域就是闭包作用域。
- Global(全局作用域):在模块级别定义的变量和函数,在整个模块内都可以访问。
- Built - in(内置作用域):Python 内置的函数和变量,如
print
、len
等,在任何地方都可以访问。
二、作用域实例
2.1 局部作用域(Local)
局部作用域是指函数内部的作用域,函数内部定义的变量和参数只能在该函数内部访问www.chinasem.cn。
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_function closure = outer_function() closure()
2.3 全局作用域(Global)
全局作用域是指在模块级别定义的变量和函数,在整个模块内都可以访问。可以使用 global
关键字在函数内部修改全局变量。
# 全局变量 def modify_global(): global global_variable # 申明修改全局变量 global_variable = 50 # 函数内部修改全局变量 return global_variable print(global_varphpiable) print(modiChina编程fy_global())
2.4 内置作用域(Built - in)
内置作用域包含了 Python 内置的函数和变量,如 print
、len
、int
等,这些函数和变量在任何地方都可以直接使用。
# 使用内置函数 len my_list = [1, 2, 3] length = len(my_list) print(length)
2.5 作用域的嵌套和查找顺序
当在代码中引用一个变量时,Python 会按照 LEGB 规则从内到外依次查找该变量。如果在局部作用域中找到了该变量,则使用该变量;如果没有找到,则继续在闭包作用域中查找,以此类推。
# 全局变量 x = 10 def outer(): # 闭包作用域变量 x = 20 def inner(): # 局部变量 x = 30 print(x) # 输出 30 inner() print(x) # 输出 20python outer() print(x) # 输出 10
- 在上述代码中,
inner
函数内部的print(x)
会先在局部作用域中查找x
,找到局部变量x = 30
并输出; outer
函数内部的print(x)
会在闭包作用域中查找x
,输出闭包作用域变量x = 20
;
- 最后,在全局作用域中调用
print(x)
会输出全局变量x = 10
。
到此这篇关于【Python】python系列之函数作用域的文章就介绍到这了,更多相关python函数作用域内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!
这篇关于Python函数作用域示例详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!