• 闭包的作用


    闭包可以保存运行环境

                   思考下面的代码会输出什么?

    list = []
    for i in range(3):
      def func(a):
      return i+a
    _list.append(func)
    for f in _list:
      print(f(1))

      1 , 2,  3吗?如果不是又该是什么呢?    结果是3, 3, 3 。
        因为,在Python中,循环体内定义的函数是无法保存循环执行过程中的不停变化的外部变量的,即普通函数无法保存运行环境!
    想要让上面的代码输出1, 2, 3并不难,“术业有专攻”,这种事情该让闭包来:

    _list = []
    for i in range(3):
      def func(i):
        def f_closure(a): # <<<---
        return i + a
      return f_closure
    _list.append(func(i)) # <<<---
    for f in _list:
      print(f(1))
    #闭包 ,在函数内当遇到return会把子层函数之前的值保存在内存中
    当你的才华还撑不起你的野心的时候,你就应该静下心来学习; 当你的能力还驾驭不了你的目标时,就应该沉下心来历练。
  • 相关阅读:
    [LuoGu] P1004 方格取数
    [LuoGu] P1018 乘积最大
    [LuoGu] P2758 编辑距离
    [JZOJ] 01知多少
    [LuoGu] P1731 生日蛋糕
    $mathcal{Const,Inline,Register}$用法总结
    T2027 蜈蚣
    T57274 黑暗城堡
    P2312 解方程
    AT2412 最大の和
  • 原文地址:https://www.cnblogs.com/ellisonzhang/p/10265478.html
Copyright © 2020-2023  润新知