闭包函数python_Python闭包函数

本文深入探讨了Python中的闭包概念,它是指内部函数引用外部作用域的变量。闭包的特点在于内部函数无法直接在全局作用域中调用。文章通过示例解释了如何通过return返回内部函数来获取其引用的外部变量,并讨论了闭包在函数作为第一类对象时的应用。此外,还解释了闭包如何保存引用环境,形成一个独立的函数实例,强调了闭包在函数高阶编程中的重要性。
摘要由CSDN通过智能技术生成

闭包

闭包: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,就会返回(打包)一个新的闭包实例

所以:

闭包 = 函数 + 引用环境

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值