• python 中的闭包


    刚刚开始学习python

    个人觉得闭包:就是内层函数引用了外层函数的变量,而外层函数的返回值又依赖于内层函数的逻辑,内层函数只有当执行该逻辑的时候才会被调用,从而导致闭包

    def count():
        fs = []
        for i in range(1, 4):
            def f():
                 return i*i
            fs.append(f)
        return fs
    
    f1, f2, f3 = count()

    结果

    >>> f1()
    9
    >>> f2()
    9
    >>> f3()
    9

    直接调用count(),得到的是

    >>> count()
    [<function count.<locals>.f at 0x000000000261CD90>, <function count.<locals>.f at 0x000000000261CE18>, <function count.<locals>.f at 0x000000000261CEA0>]

    之所以每个结果都是9,是因为在内部定义的函数f()中引入了循环变量i,只有当操作的时候才会传入i,而在执行count()结束时 i的值已经是3了,所以在每次执行的时候得到的就是3*3=9。

    以上均是个人理解,有不对的地方希望大家指正

  • 相关阅读:
    旺旺狗
    写在父亲离世周年
    老家老院
    玉米粒自传
    记念父亲
    26年前来蒙阴
    玉米粒自传
    pywin32安装
    linux中源码安装mysql
    在Linux上搭建禅道
  • 原文地址:https://www.cnblogs.com/soul-mate/p/6646267.html
Copyright © 2020-2023  润新知