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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 闭包函数,先跑完循环执行外层函数,输出为一个函数,当再次调用输出结果时,再运行内层函数,此时变量为最后一次更改后变量。

    因此,返回函数不要引用任何循环变量,或者后续会发生变化的变量。

    查看全部
    1 采集 收起 来源:python中闭包

    2018-07-30

  • 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。

    def f(j):
        def g():
            return j*j
        return g


    查看全部
    0 采集 收起 来源:python中闭包

    2018-07-30

  • 也就是说,方法调用将作用在 x 的实际类型上。s 是Student类型,它实际上拥有自己的 whoAmI()方法以及从 Person继承的 whoAmI方法,但调用 s.whoAmI()总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。

    查看全部
    0 采集 收起 来源:python中多态

    2018-07-30

  • 这说明在一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。

    查看全部
  • 1.变量可以指向函数

    >>>f=abs   #定义变量f指向abs

    >>>f(-10)   #对f进行调用

    10

    2.函数名其实就是指向函数的变量

    >>>abs

    #直接执行abs,得到的函数名实际上是一个变量

    >>>abs=len   #将abs这个变量指向另一个函数

    >>>abs(-10)   #报错

    >>>abs([1,2,3])

    3. 高阶函数:能接受函数做参数的函数

    变量可以指向函数

    函数的参数可以接收变量

    一个函数可以接收另一个函数作为参数

    >>>def add(x,y,f):

           return f(x)+f(y)

    >>>add(-5,9,abs)

    14


    查看全部
  • 函数式: functional 一种编程范式。

    不同语言的抽象层次不同(由低到高):

    计算机硬件(指令)、汇编语言、C语言(函数)、Python语言(函数式)

    函数式编程的特点:

    1.把计算视为函数而非指令

    2.纯函数式编程:不需要变量,没有副作用,测试简单

    3.支持高阶函数,代码简洁

    Python支持的函数式编程:

    1.不是纯函数式编程:允许有变量

    2.支持高阶函数:函数也可以作为变量传入

    3.支持闭包:有了闭包 就能返回函数

    4.有限度的支持匿名函数


    查看全部
  • # 基础知识回顾

    变量和数据类型:Python 内置的基本类型(整数、浮点数、字符串、布尔值、空值)

    List 和 Tuple:顺序的集合类型

    条件判断和循环:控制程序流程

    Dict 和 Set:根据 key 访问的集合类型

    函数:定义和调用函数

    切片:如何对 list 进行切片

    迭代:如何用 for 循环迭代集合类型

    列表生成式:如何快速生成列表

    # 将要学习的内容

    1. 函数式编程

    2. 模块

    3. 面向对象编程:面向对象的概念、属性、方法、继承、多态等

    4. 定制类:利用 Python 的特殊方法定制类

    # 学习目标

    1. 掌握函数式编程

    2. 掌握面向对象编程

    3. 能够编写模块化的程序


    查看全部
    2 采集 收起 来源:课程介绍

    2018-07-30

  • 注意:return s and len(s.strip()) > 0

    这段代码的作用:

    and运算表示只有当s为真,并且s去掉首位空格后长度大于零(帮助排除s是'   '的情况),才返回True,否则返回False,就可以起到filter的效果了

    lambda s: s if len(s.strip()) > 0 不行的原因:

    因为None没有strip方法,而if只做s.strip大于0的判断


    查看全部
  • 重点

    首先用g()返回j*j的结果作为f(j)的参数,再把f(j)的结果r(也就是f(j)的参数)添加到fs里面。

    如何构成这个思路是关键。


    查看全部
    0 采集 收起 来源:python中闭包

    2018-07-29

  • 调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:

    先计算头两个元素:f(1, 3),结果为4;
    再把结果和第3个元素计算:f(4, 5),结果为9;
    再把结果和第4个元素计算:f(9, 7),结果为16;
    再把结果和第5个元素计算:f(16, 9),结果为25;
    由于没有更多的元素了,计算结束,返回结果25。


    查看全部
  • 不是很理解
    查看全部
    0 采集 收起 来源:python中闭包

    2018-07-29

  • 省去名称函数lambda。

    def calc_prod(lst):

        def lazy_prod():

            return reduce(lambda x,y:x*y,lst)

        return lazy_prod


    f = calc_prod([1, 2, 3, 4])

    print f()


    查看全部
  • filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list

    查看全部
  • 调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:

    先计算头两个元素:f(1, 3),结果为4;
    再把结果和第3个元素计算:f(4, 5),结果为9;
    再把结果和第4个元素计算:f(9, 7),结果为16;
    再把结果和第5个元素计算:f(16, 9),结果为25;
    由于没有更多的元素了,计算结束,返回结果25。

    reduce()还可以接收第3个可选参数,作为计算的初始值

    reduce(f, [1, 3, 5, 7, 9], 100)

    结果将变为125,因为第一轮计算是:

    计算初始值和第一个元素:f(100, 1),结果为101。


    查看全部
  • reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

    查看全部

举报

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

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