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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 如果要提高Python代码的运行速度,最简单的方法是把某些关键函数用 C 语言重写,这样就能大大提高执行速度。

    同样的功能,StringIO 是纯Python代码编写的,而 cStringIO 部分函数是 C 写的,因此 cStringIO 运行速度更快。


    查看全部
  • f.__name__是一边两个_

    查看全部
  • Python允许从多个父类继承,称为多重继承。多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用。

    查看全部
  • 由于Python是动态语言,所以,传递给函数 who_am_i(x)的参数 x 不一定是 Person 或 Person 的子类型。任何数据类型的实例都可以,只要它有一个whoAmI()的方法即可。

    这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。

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

    2019-04-09

  • class 子类名(父类名):
        def __init__(self, 子类属性):
            super(子类名, self).__init__(父类属性)
            子类属性初始化

    要用 super(子类名, self).__init__(父类属性) 去初始化父类,否则,继承自父类的子类将没有父类的属性。

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


    查看全部
  • 通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.count 实际上相当于 Person.count

    因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。


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

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

    2019-04-09

  • 使用 get/set 方法来封装对一个属性的访问在许多面向对象编程的语言中都很常见。

    查看全部
    0 采集 收起 来源:python中 @property

    2019-04-08

  • 在第7节中,我们在sorted这个高阶函数中传入自定义排序函数就可以实现忽略大小写排序。

    def cmp_ignore_case(s1, s2):
        u1 = s1.lower()
        u2 = s2.lower()
        if u1 < u2:
            return -1
        if u1 > u2:
            return 1
        return 0

    print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)

    请用functools.partial把这个复杂调用变成一个简单的函数:

    • 要固定sorted()的cmp参数,需要传入一个排序函数作为cmp的默认值。

      参考代码:

      import functools
      sorted_ignore_case = functools.partial(sorted, cmp=lambda s1, s2: cmp(s1.upper(), s2.upper()))
      print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])


    查看全部
    0 采集 收起 来源:python中偏函数

    2019-04-08

  • 对于实例变量,dir()返回所有实例属性,包括`__class__`这类有特殊意义的属性

    查看全部
  • 请编写一个@performance,它可以打印出函数调用的时间。

    import time

    def performance(f):
        def fn(*args, **kw):
            t1 = time.time()
            r = f(*args, **kw)
            t2 = time.time()
            print 'call %s() in %fs' % (f.__name__, (t2 - t1))
            return r
        return fn

    @performance
    def factorial(n):
        return reduce(lambda x,y: x*y, range(1, n+1))

    print factorial(10)

    查看全部
  • 多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用。

    查看全部
  • 除了从一个父类继承外,Python允许从多个父类继承,称为多重继承。

    查看全部
  • 这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。

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

    2019-04-08

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

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

    2019-04-08

举报

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

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