python基础 -- 闭包

1. 作用

返回函数,并在内部引用局部参数,记住内层函数不是马上调用的,所以参数一定要不能在内层函数里面参数不能是直接调用外层函数的参数

2. 操作

牛逼了,竟然全是9

  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 = count()

f1()
# 9
f2()
# 9
f3()
# 9

牛逼了,又不是9了

def count():
    def f(j):
        def g():
            return j*j
        return g
    fs = []
    for i in range(1, 4):
        fs.append(f(i)) # f(i)立刻被执行,因此i的当前值被传入f()
    return fs

f1, f2, f3 = count()
f1()
# 1
f2()
# 4
f3()
#9
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,735评论 0 38
  • 要点: 函数式编程:注意不是“函数编程”,多了一个“式” 模块:如何使用模块 面向对象编程:面向对象的概念、属性、...
    victorsungo阅读 5,499评论 0 6
  • Python进阶框架 希望大家喜欢,点赞哦首先感谢廖雪峰老师对于该课程的讲解 一、函数式编程 1.1 函数式编程简...
    Gaolex阅读 10,862评论 6 53
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,674评论 0 13
  • 吴京至今已经拍了5部电影,战狼系列我最喜欢,自第一部《战狼1》犯我中华者,虽远必诛开始,我觉得中国的电影也...
    D083关璐洁上海阅读 1,794评论 1 4