码迷,mamicode.com
首页 > 其他好文 > 详细

函数的嵌套和作用域链,闭包

时间:2018-10-07 16:51:13      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:好处   必须   local   oca   结束   lob   释放   cal   查找   

 函数嵌套:  #指在第二个函数里面调用第一个函数的结果

def func():

  print(‘sss‘)

def func1(f):

  f()

func1(func)

作用域链:   #最内层的函数可以调用并且更改其他函数内的代码变量但是只限制于函数这个作用域内的变量  全局的变量不能被内部函数调用 否则会报错

        #除非声明global 全局变量  全局变量一般不会经常使用 因为会影响整个局面

        

def func():

  a = 1

  def func1():

   a +=1

   print(a)

  func1()

func()

其中函数名字可以作为参数的实参,也可以赋值给其他变量,也可以作为容器名字也就是内存地址

globals 无论放在函数外边还是里边它都是查找全局的内存地址

locals  放在某个函数的里边查找的是这个函数内的所有变量  如果放在函数的最外边则与globals一样差的是全局内的所有变量

闭包:

def func():

    a = 1

  def func1():

    print(a)

  return func1

aa  = func()

aa()

#  闭包必须嵌套函数 ,也必须是内部函数调用外部函数的变量

#闭包的好处是避免一个函数执行结束后会释放前面的变量或者代码 不用重复定义某个变量,节省内存

 

函数的嵌套和作用域链,闭包

标签:好处   必须   local   oca   结束   lob   释放   cal   查找   

原文地址:https://www.cnblogs.com/yuexijun/p/9750341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!