python函数进阶(闭包)

一、闭包

1、闭包的概念:

  • 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包

2、闭包实例:

def test(number):
    def test_in(number_in):
        print('在test_in函数里面噢,number_in是%d' % number_in)
        return number + number_in

    return test_in


ret = test(20)
print(ret(100))
print(ret(200))

详细说一下这个代码的运行过程。首先这个函数满足了闭包的要求在内部再去定义一个函数,并且这个内部的函数用到了外部函数的局部变量,所以这是个闭包。在看一个函数的时候第一步永远都是先找函数的调用,没有调用的话一个函数压根跑不起来。按照代码从上到下执行的顺序,可以看到第一个调用test(20),这个test函数的调用(这个时候先不要看ret = 这个东西 就单看引用)。函数调用后开始执行外部的这个test函数,20这个参数传递给number这个形参,然后第一个函数就会开始运行,直到遇到return test_in这里,他会返回出内层函数的引用给到ret这个变量上。接着程序再往下走,遇到ret(100)这个调用,其实这里的ret调用也就是代表调用了内层函数test_in(number_in),100传递给了number_in这个参数。然后开始运行内层函数,在第一个print这里的%d就是代表number_in = 100。接着到内层函数return返回值这里,把这个返回值返回给函数调用者ret(100),print(ret(100))最后的结果就是120 。下面的这个print(ret(200))跟上面的就是同理了,这里就不做阐述了~

综上所述就是一个闭包的概念和详细过程了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值