python中函数的功能及作用,python函数知识点

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: