Python闭包函数

python

闭包:python中的闭包从表现形式上定义(解释)为:

  如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).

先看一个函数:

 def func1()

def func2()

a = 1

return a

func2()

因为函数内部又有嵌套函数,
嵌套函数定义:定义在内部的函数无法在全局被调用
所以产生了闭包问题
什么问题?
就是func1 拿不到func2 的变量a
怎么才能拿到呢?
我们知道,函数是第一类对象(第一类对象说白了你可以把函数当成变量使用),你可以把func1中的变量(func2)通过return返回

 def func1()

def func2()

a = 1

return a

return func2

x = func1() #这样就拿到了func2 并赋值给了变量x

x() # x()等同于 func2() 看明白了吧 就得到了以个返回值a 这样就拿到func2 的变量a了

而如果:

def func1(para1)

para1

def func2()

a = 1

return para1 + a

return func2

func1(5) #如果把5传给func1 就会把def func2 这个函数打包,

#注意:

def func2()

a = 1

return 1 + a

func1(5)() #等同于func2()

#就变相调用函数func2() 得到返回值 6

print(func1(5)()) # 6

#如果func1(8), 那么func2打包后:

def func2()

a = 1

return 8 + a

#每次调用func1,就会返回(打包)一个新的闭包实例

所以:

闭包 = 函数 + 引用环境

  

以上是 Python闭包函数 的全部内容, 来源链接: utcz.com/z/388791.html

回到顶部