python中函数的功能及作用,python函数知识点
边肖之前在文章里给大家讲了范围,有朋友让边肖详细讲解这个内容,于是边肖不负众望,收集了很多内容,希望给大家做一个非常深刻易懂的内容。下面边肖重点介绍这一部分,并为您整理出以下步骤。关于作用域
Python的作用域可以分为四种:
LL (Local)本地范围
LE(封闭)在封闭函数以外的函数中
LG(全球)全球范围
LB(内置)内置作用域
影响变量/函数作用范围的有:
l函数:
span>def 或 lambda
l类:class
l关键字:global noglobal
l文件:*py
l推导式:[],{},()等,仅限Py3.x中,Py2.x会出现变量泄露。
1、赋值在前,引用在后
#------同作用域内------name="MING"
print(name)
#------不同作用域内------
name="MING"
defmain():
print(name)
2、引用在前,赋值在后(同一作用域内)
print(name)name="MING"
#UnboundLocalError:localvariable'name'referencedbeforeassignment
3、赋值在低层,引用在高层
#L->E->G->B#从左到右,由低层到高层
defmain():
name="MING"
print(name)
#NameError:name'name'isnotdefined
关于改变作用域
变量的作用域,与其定义(或赋值)的位置有关,但不是绝对相关。因为我们可以在某种程度上去改变向上的作用范围。
l关键字:global将 局部变量 变为全局变量
l关键字:nonlocal可以在闭包函数中,引用并使用闭包外部函数的变量(非全局的噢)
global好理解,这里只讲下nonlocal。
先来看个例子
defdeco():age=10
defwrapper():
age+=1
returnwrapper
deco()()
运行一下,会报错:
#UnboundLocalError:localvariable'age'referencedbeforeassignment
但是这样就OK
defdeco():age=10
defwrapper():
nonlocalage
age+=1
returnwrapper
deco()()
#输出:11
其实,你如果不使用 +=、-=等一类的操作,不加nonlocal也没有关系。这就展示了闭包的特性。
defdeco():age=10
defwrapper():
print(age)
returnwrapper
deco()()
#输出:10
以上是关于python作用域内容整合集锦,大家可以了解下哦~另外,作用域在大家的项目实践里,是经常能遇到的事情,因此,掌握好作用域也至关重要,多看两遍以上内容,很容易就掌握住了。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。