为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
python进阶_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 最重要的是要理解f1, f2, f3 = count()这句话 count()的返回值是一个list,list里面存的是执行for i in range(1, 4)后返回的3个fs函数 f1, f2, f3 = count()将这3个fs函数依次赋值给f1, f2, f3;同时赋值的还有变量j。因为j=i让j和当前的i绑定起来了,所以f1, f2, f3得到的j值分别是1,2,3 最后在计算f1()的时候,用的是之前传过来的j=1,而不是变化后的i=3,所以f1()=1。 f2(),f3(),依次类推。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-06-20

  • def lazy_sum(*args): def sum(): ax = 0 for n in args: ax = ax + n return ax return sum 闭包 注意到返回的函数在其定义内部引用了局部变量args,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,所以,闭包用起来简单,实现起来可不容易。 另一个需要注意的问题是,返回的函数并没有立刻执行,而是直到调用了f()才执行 def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count() 在上面的例子中,每次循环,都创建了一个新的函数,然后,把创建的3个函数都返回了。 你可能认为调用f1(),f2()和f3()结果应该是1,4,9,但实际结果是: f1(),f2(),f3()全部都是9!原因就在于返回的函数引用了变量i,但它并非立刻执行。等到3个函数都返回时,它们所引用的变量i已经变成了3,因此最终结果为9。 返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。 如果一定要引用循环变量怎么办?方法是再创建一个函数,用该函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已绑定到函数参数的值不变: >>> def count(): ... fs = [] ... for i in range(1, 4): ... def f(j): ... def g(): ... return j*j ... return g ... fs.append(f(i)) ... return fs ... >>> f1, f2, f3 = count() >>> f1() 1 >>> f2() 4 >>> f3() 9 代码较长,可利用lambda函数缩短代码。
    查看全部
    0 采集 收起 来源:python中闭包

    2018-03-22

  • @property,可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式
    查看全部
    0 采集 收起 来源:python中 @property

    2017-06-20

  • 公约数 g = gcd(self.p, self.q)
    查看全部
  • map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。 注意;map()函数不改变原有的 list,而是返回一个新的 list。 利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。 由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。
    查看全部
  • 高阶函数:函数名和普通变量没有区别,函数名其实就是指向函数的变量 能接受函数作为参数的函数 f = abs def add(x, y, f): return f(x) + f(y)
    查看全部
  • 函数式编程:不需要变量,没有副作用,测试简单
    查看全部
  • http://www.imooc.com/qadetail/149417
    查看全部
  • demo
    查看全部
  • 高阶函数的定义
    查看全部
  • 变了可以指向函数
    查看全部
  • 函数名其实就是指向函数的变量
    查看全部
  • 函数名其实就是指向函数的变量
    查看全部
  • cmp()默认从小到大(前面比后面小为1)
    查看全部
    0 采集 收起 来源:python中 __cmp__

    2017-06-19

  • __str__ xx() __repr__ xx
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!