为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 请定义Person类的__init__方法,除了接受 name、gender 和 birth 外,还可接受任意关键字参数,并把他们都作为属性赋值给实例。
    class Person(object):
    
        def __init__(self, name, gender, birth, **kw):
            self.name = name
            self.gender = gender
            self.birth = birth
            # self.__dict__.update(kw)
            # for key,value in kw.items():
            #     self.__dict__[key] = value
            for k,v in kw.iteritems():
                setattr(self,k,v)
    
    xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')
    print xiaoming.name
    print xiaoming.job


    查看全部
  • python是动态语言,调用实例作为参数,不检查类型,只要实例对象存在相应的方法就行。静态语言如Java不一样。

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

    2019-08-16

  • 判断类型

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

    t = Teacher('Alice', 'Female', 'English')

    print isinstance(t,Person)  #True

    print isinstance(t,Student)  #False

    print isinstance(t,Teacher)  #True

    print isinstance(t,object)     #True


    查看全部
  • 闭包只保存通过参数穿进去的值到_closur_变量,不会保存函数里声明的变量的值

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

    2019-08-16

  • map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

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

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



    查看全部
  • 匿名函数lambda


    查看全部
  • 继承一个类(Student类继承Person类)

    class Student(Person):
        def __init__(self, name, gender, score):        super(Student, self).__init__(name, gender)
            self.score = score

    一定要用 super(Student, self).__init__(name, gender) 去初始化父类。

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

    查看全部
  • 变量可以指向函数,可以用变量存储一个函数,然后调用函数时直接用变量调用。

    函数就相当于一个变量。

    查看全部
  • 任务作业不清楚

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

    2019-08-16

  • 当实例属性和雷属性重名时,实例属性优先级更高!

    查看全部
  • # 希望一次返回3个函数,分别计算1x1,2x2,3x3:def count():
        fs = []
        for i in range(1, 4):
            def f():
                 return i*i
            fs.append(f)
        return fs
    
    f1, f2, f3 = count()

    不太懂

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

    2019-08-16

  • Lambda

    Lambda函数也叫做匿名函数,就是说没有具体名称的函数。Lambda函数可以使用任何数量的参数,但只能有一个表达式。

     Lambda和def

    1)def创建的方法是有名称的,而lambda没有。
    2)lambda会返回一个函数对象,但这个对象不会赋给一个标识符,而def则会把函数对象赋值给一个变量(函数名)。
    3)lambda只是一个表达式,而def则是一个语句。
    4)lambda表达式” : “后面,只能有一个表达式,def则可以有多个。
    5)print等语句不能用于lambda中,def可以。
    6)lambda一般用来定义简单的函数,而def可以定义复杂的函数。
    6)lambda函数不能共享给别的程序调用,def可以。

    查看全部
  • 继承——父类、子类

    class Person(object):        #父类,已有属性:name,gender

        def __init__(self,name,gender):

            self.name=name

            self.gender=gender


    class Student(Person):     #子类

        def __init__(self,name,gender,school,score):

            super(Student,self).__init__(name,gender)

            self.school=school

            self.score=score

    • 复用已有代码

    • 自动拥有了现有类的所有功能

    • 只需要编写缺少的新功能

    父类和子类是is关系(包含)

    Student类和Book类是has关系

    class Student(Person):

        def __init__(self,bookName):

            self.book=Book(bookName)



    查看全部
  • lambda x, y : x * y #匿名函数

    查看全部
  • 方法包含 实例方法、类方法

    class中定义的全部都是实例方法,实例方法第一个参数self是实例本身。

    class中定义类方法:

    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。

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

    查看全部

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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