zoukankan      html  css  js  c++  java
  • 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(), f2(), f3()都是9

    原式子中, i 并没有在f函数里面定义,而是去找的父函数的i变量,所以f和外部i构成闭包,i在range最后的取值为3,所以return fs的时候,闭包里面i的值基本确定了,每次调用的结果都是9.

    def func():
        fs = []
        for i in range(1, 4):
            def inner(j = i):#把中间值保存下来,所以返回的是,1 4,9
                return j*j
            
            fs.append(inner)
        
        return fs
    
    f1, f2, f3 = func()
    print(f1(), f2(), f3())
    def func():
        fs = []
        for i in range(1, 4):
            def inner(x):#返回匿名函数
                return lambda x: x*x
            
            fs.append(inner(i))
        
        return fs
    
    f1, f2, f3 = func()
    print(f1(), f2(), f3())
  • 相关阅读:
    Linux tmux 工具
    HTML 注释
    HTML 引用
    HTML 格式化
    /etc/services
    Linux ss 命令
    Python cookielib 模块
    爬取需要登录的页面
    hasattr() 、getattr() 、setattr()
    爬取文本
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/14003213.html
Copyright © 2011-2022 走看看