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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • def f(x):
        return x*x
    print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])

    输出结果:

    [1, 4, 9, 10, 25, 36, 49, 64, 81]


    查看全部
  • 高阶函数:能够接收 函数作为参数的函数

    变量名可以指向一个函数

    查看全部
  • 函数式 编程

    函数: function, 

    函数式:functional 一种编程范式

    函数式编程的特点

    把计算视为函数而非指令

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

    支持高阶函数,代码简洁

    python支持的函数式编程

    不是纯的函数式编程 :支持变量

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

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

    有限度的支持匿名函数

     

    查看全部
  • import time, functools   引入时间以及functools功能

    def performance(unit):   

        def perf_decorator(f):

            @functools.wraps(f)     注意@functools.wraps应该作用在返回的新函数上。这里应该是最里层的函数,因为下面用到该修饰器时就是调用下面函数的核心代码。

    该函数功能是把原函数的所有必要属性都一个一个复制到新函数上,也就是下面的wrapper函数上

            def wrapper(*args, **kw):

                t1 = time.time()

                r = f(*args, **kw)

                t2 = time.time()

                t = (t2 - t1) * 1000 if unit=='ms' else (t2 - t1)

                print 'call %s() in %f %s' % (f.__name__, t, unit)

                return r

            return wrapper

        return perf_decorator

     

    @performance('ms')

    def factorial(n):

        return reduce(lambda x,y: x*y, range(1, n+1))

    print factorial.__name__


    查看全部
  • class Student(Person):
        def __init__(self, name, gender, score):        super(Student, self).__init__(name, gender)
            self.score = score


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

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

    2018-07-07

  • 对于实例变量,dir()返回所有实例属性,包括`__class__`这类有特殊意义的属性。注意到方法`whoAmI`也是 s 的一个属性。

    如何去掉`__xxx__`这类的特殊属性,只保留我们自己定义的属性?回顾一下filter()函数的用法。

    dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了


    查看全部
  • python 中的多重继承

    一个子类可以有多个父类,同时具有所继承的父类的功能

    例如:A->B-D    A->C-D   类D同时继承了B 和C

    D 同时继承自 B 和 C,也就是 D 拥有了 A、B、C 的全部功能。多重继承通过 super()调用__init__()方法时,A 虽然被继承了两次,但__init__()只调用一次:

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


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

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

    动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。


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

    2018-07-06

  • 函数isinstance()可以判断一个变量的类型,既可以用在Python内置的数据类型如str、list、dict,也可以用在我们自定义的类,它们本质上都是数据类型。

    s 是Student类型,不是Teacher类型,这很容易理解。但是,s 也是Person类型,因为Student继承自Person,虽然它比Person多了一些属性和方法,但是,把 s 看成Person的实例也是可以的。

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


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

    self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)。


    查看全部
  • python继承的特点:

    1、总是从某个类继承,默认是object

    2、必须调用super(子类名,self).__init__(args)   #args是父类各参数,super是用来初始化父类参数的


    查看全部
  • https://img1.sycdn.imooc.com//5b3f2f250001ce2006050566.jpg

    https://img1.sycdn.imooc.com//5b3f2f2500010cba06050602.jpg

    111111

    查看全部
  • https://img1.sycdn.imooc.com//5b3f2ee90001ce2006050566.jpg

    https://img1.sycdn.imooc.com//5b3f2eea00010cba06050602.jpg

    111111

    查看全部
  • https://img1.sycdn.imooc.com//5b3f2ed00001ce2006050566.jpg

    https://img1.sycdn.imooc.com//5b3f2ed000010cba06050602.jpg

    111111

    查看全部

举报

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

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