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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 闭包
    查看全部
    0 采集 收起 来源:python中闭包

    2018-12-22

  • python中创建实例属性

    虽然可以通过Person类创建出xiaoming、xiaohong等实例,但是这些实例看上除了地址不同外,没有什么其他不同。在现实世界中,区分xiaoming、xiaohong要依靠他们各自的名字、性别、生日等属性。

    如何让每个实例拥有各自不同的属性?由于Python是动态语言,对每一个实例,都可以直接给他们的属性赋值,例如,给xiaoming这个实例加上name、gender和birth属性:

    xiaoming = Person() xiaoming.name = 'Xiao Ming' xiaoming.gender = 'Male' xiaoming.birth = '1990-1-1'

    给xiaohong加上的属性不一定要和xiaoming相同:

    xiaohong = Person() xiaohong.name = 'Xiao Hong' xiaohong.school = 'No. 1 High School' xiaohong.grade = 2

    实例的属性可以像普通变量一样进行操作:

    xiaohong.grade = xiaohong.grade + 1


    查看全部
  • python之定义类并创建实例

    在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类如下:

    class Person(object):     pass

    按照 Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。类的继承将在后面的章节讲解,现在我们只需要简单地从object类继承。

    有了Person类的定义,就可以创建出具体的xiaoming、xiaohong等实例。创建实例使用 类名+(),类似函数调用的形式创建:

    xiaoming = Person() xiaohong = Person()


    查看全部
  • 关于分子和分母是否可以相约的问题:

    首先明确一个定理---如果分子和分母可以相约去,那么,用1减去该分数得到的分数也可以约去。

    ## 其次辗转相除法:

    ### 原理:两个数的最大公约数(如果这两个数不能整除)等于除数与余数的最大公约数

    查看全部
  • 但是,Python 3.x已经改进了整数的除法运算,“/”除将得到浮点数,“//”除才仍是整数:

    >>> 10 / 3
    3.3333333333333335
    >>> 10 // 3
    3


    查看全部
  • python之导入模块

    要使用一个模块,我们必须首先导入该模块。Python使用import语句导入一个模块。例如,导入系统自带的模块 math:

    import math

    你可以认为math就是一个指向已导入模块的变量,通过该变量,我们可以访问math模块中所定义的所有公开的函数、变量和类:

    >>> math.pow(2, 0.5) # pow是函数 1.4142135623730951 >>> math.pi # pi是变量 3.141592653589793

    如果我们只希望导入用到的math模块的某几个函数,而不是所有函数,可以用下面的语句:

    from math import pow, sin, log

    这样,可以直接引用 pow, sin, log 这3个函数,但math的其他函数没有导入进来:

    >>> pow(2, 10) 1024.0 >>> sin(3.14) 0.0015926529164868282

    如果遇到名字冲突怎么办?比如math模块有一个log函数,logging模块也有一个log函数,如果同时使用,如何解决名字冲突?

    如果使用import导入模块名,由于必须通过模块名引用函数名,因此不存在冲突:

    import math, logging print math.log(10)   # 调用的是math的log函数 logging.log(10, 'something')   # 调用的是logging的log函数

    如果使用 from...import 导入 log 函数,势必引起冲突。这时,可以给函数起个“别名”来避免冲突:

    from math import log from logging import log as logger   # logging的log现在变成了logger print log(10)   # 调用的是math的log logger(10, 'import from logging')   # 调用的是logging的log


    查看全部
  • https://img1.sycdn.imooc.com//5c1daa660001ab7910100568.jpghttps://img1.sycdn.imooc.com//5c1daa960001332e09200514.jpghttps://img1.sycdn.imooc.com//5c1daab500012c4d09180516.jpghttps://img1.sycdn.imooc.com//5c1daae000015b4a09190512.jpghttps://img1.sycdn.imooc.com//5c1dab0f0001c6fc09180514.jpg都是截图1

    查看全部
  • python中匿名函数

    高阶函数可以接收函数做参数,有些时候,我们不需要显式地定义函数,直接传入匿名函数更方便。

    在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算 f(x)=x时,除了定义一个f(x)的函数外,还可以直接传入匿名函数:

    >>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81]

    通过对比可以看出,匿名函数 lambda x: x * x 实际上就是:

    def f(x):     return x * x

    关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。

    匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。

    使用匿名函数,可以不必定义函数名,直接创建一个函数对象,很多时候可以简化代码:

    >>> sorted([1, 3, 9, 5, 0], lambda x,y: -cmp(x,y)) [9, 5, 3, 1, 0]

    返回函数的时候,也可以返回匿名函数:

    >>> myabs = lambda x: -x if x < 0 else x  >>> myabs(-1) 1 >>> myabs(1) 1


    查看全部
  • 一定要用 super(Student, self).__init__(name, gender) 去初始化父类,否则,继承自 Person 的 Student 将没有 name 和 gender。

    函数super(Student, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)。

    查看全部
  • 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:

    a = '     123'
    a.strip()

    结果: '123'

    a='\t\t123\r\n'
    a.strip()

    结果:'123'


    查看全部
  • 注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。

    查看全部
  • 高阶函数、闭包、匿名函数 lambda、装饰器 decorator、模块和包 __future__() 、面向对象 中的类与实例 属性与方法、类的继承 多态、定制类 特殊方法 __str__     __repr__    __call__()

    查看全部
    0 采集 收起 来源:课程总结

    2018-12-21

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

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

    2018-12-21

  • >>> sorted([1, 3, 9, 5, 0], lambda x,y: -cmp(x,y))
    [9, 5, 3, 1, 0]

    返回函数的时候,也可以返回匿名函数:

    >>> myabs = lambda x: -x if x < 0 else x 
    >>> myabs(-1)
    1
    >>> myabs(1)
    1


    查看全部
  • 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()

    print f1(), f2(), f3()


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

    2018-12-20

举报

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

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