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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 不同语言的抽象层次不同

    查看全部
  • 什么是函数式编程


    查看全部
  • python进阶学习目标

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

    2018-03-24

  • python进阶内容

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

    2018-03-24

  • 我们在 class 中定义的实例方法其实也是属性,它实际上是一个函数对象:

    class Person(object):
        def __init__(self, name, score):
            self.name = name
            self.score = score
        def get_grade(self):
            return 'A'
    
    p1 = Person('Bob', 90)
    print p1.get_grade# => <bound method Person.get_grade of <__main__.Person object at 0x109e58510>>print p1.get_grade()# => A


    查看全部
  • Python是动态语言 java 是静态语言

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

    2018-03-24

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

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

    2018-03-24

  •     类属性只有一份,所以,当Person类的address改变时,所有实例访问到的类属性都改变了。

        如作业中就是如此,可以看出count的变化,类属性也在不断变化



    查看全部
  • class Person(object):
        count = 0    @classmethod
        def how_many(cls):
            return cls.count
        def __init__(self, name):
            self.name = name
            Person.count = Person.count + 1
    
    print Person.how_many()
    p1 = Person('Bob')
    print Person.how_many()

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


    查看全部
  • p1.get_grade = types.MethodType(fn_get_grade, p1, Person)


    查看全部
  • __slots__定义的属性仅对当前类起作用。

    若子类中也定义了__slots__,则子类允许定义的属性 就包含 父类与自身二者__slots__中的属性。

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

    2018-03-24

  • 如果要限制添加类的属性,可以使用__slots__来实现,

    例如 class A():

                __slots__= ('name', 'gender','score')

                ........

    则 该类只允许有name, gender, score 三个属性


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

    2018-03-24

  • http://python.jobbole.com/82344/

    查看全部
  • 在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,返回值就是该表达式的结果。

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


    查看全部
  • def is_not_empty(s):

      print filter(lambda s: s and len(s.strip())>0, ['test', none, '', 'str', ' ', 'end'])


    查看全部

举报

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

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