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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。

    查看全部
  • 请创建包含两个 Person 类的实例的 list,并给两个实例的 name赋值,然后按照 name 进行排序。

    参考代码:

    class Person(object):
        pass
    p1 = Person()
    p1.name = 'Bart'
    
    p2 = Person()
    p2.name = 'Adam'
    
    p3 = Person()
    p3.name = 'Lisa'
    
    L1 = [p1, p2, p3]
    L2 = sorted(L1, lambda p1, p2: cmp(p1.name, p2.name))
    
    print L2[0].name
    print L2[1].name
    print L2[2].name


    查看全部
  • 特殊方法:

    1)定义在class中。

    2)不需要直接调用。

    3)只需编写用到的特殊方法。

    4)有关联性的特殊方法都必须实现。

         比如:__getattr__、__setattr__、_delattr__


    查看全部
  • 类具有继承关系,并且子类类型可以向上转型看做父类类型。

    多态:方法调用将作用在x的实际类型上,并且调用方法总是先查找它自身(类型)中的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。

    由于Python是动态语言,所以传递给方法的参数x不应是父类或子类,任何数据类型的实例都可以,只要它有该方法即可。(动态语言调用实例方法不检查类型,只要方法存在,参数正确,就可以调用)


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

    2019-12-02

  • @performance('ms')相当于执行 step1 = performance(''ms') 接着执行 step2 = perf_decorator('factorial') 而factorial(10)即调用step2,也就是执行wrapper(*args,**kw),函数中的参数变为了10,最后的return r即为return f(*args,**kw),也就是执行原来的factorial(10)

    查看全部
  • class中的定义的实例方法其实也是属性,它实际上是一个函数对象(没有括号时返回的是一个绑定到实例的函数对象,打括号时才是方法调用)。

    可用types.MethodType()把一个函数变为一个方法,然后动态地添加到实例上。

    给一个实例动态添加方法并不常见,直接在class中定义要更直观)


    查看全部
  • 实例的方法就是在类中定义的函数,它的第一个参数永远是 self,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的:class Person(object):     def __init__(self, name):        self.__name = name     def get_name(self):        return self.__name在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。

    查看全部
  • Mark.

    查看全部
  • Mark.

    查看全部
  • 绑定在一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。

    查看全部
  • 定义类的实例属性时,python根据属性名来对属性权限进行控制。

    双下划线开头:__xxx 不能直接被外部访问

    双下划线开头,双下划线结尾:__xxx__ 可以被外部访问,在python的类中被称为特殊属性(有很多预定义的特殊属性可以使用,通常我们不要把普通属性以这种方式命名)

    单下划线开头: _xxx 虽然可以为外部访问,但是按照习惯不应该被外部访问


    查看全部
  • class Person(object):
        def __init__(self, name, gender, birth, **kw):         # 使用 **kwargs 输入dict,然后用setattr(self,k,v)设置任意属性;
            self.name = name
            self.gender = gender
            self.birth = birth
            for k, v in kw.items():
                setattr(self, k, v)
                
              # 在python3中,使用**kw,或者**kwargs都可以,但是iteritems已经不能用了,都被items取代了。


    查看全部
  • python
    查看全部
  • 闭包:内层函数引用外层函数的变量,然后返回内层函数的情况

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

    2019-12-01

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

    闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变


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

    2019-12-01

举报

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

微信扫码,参与3人拼团

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

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