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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • python是动态语言,对每一个实例,都可以直接给他们的属性赋值,例如给xiaoming这个实例加上name,gender 属性 :

    xiaoming=person()

    xiaoming.name='xiaoming'

    xiaming.gender='Male' 


    查看全部
  • 带参数的decorator

    1:定义带参数的decorator,只需要在不带参数的decorator外层,再加一层函数,这层函数接收decorator的函数,详见代码

    查看全部
  • 赋值形式a, b, L = 0, 1, []

    先计算右边后赋值 a, b = b, a + b


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

    2018-04-16

  • 1.python的继承

    总是从某个类继承 没有就从object继承

    不要忘记调用super__init__()方法,这个方法是用来初始化父类的

    class Student(Person):

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

            super(Student, self).__init__(name, gender) 初始化父类

            self.score = score


    2.isinstance()可以判断一个变量的类型

     isinstance(s, Person) 在一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。

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

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


    3. type() 函数获取变量的类型,它返回一个 Type 对象:

    用 dir() 函数获取变量的所有属性

    getattr(s, 'name')  # 获取name属性

    setattr(s, 'name', 'Adam')  # 设置新的name属性


    查看全部
  • 计算平方根的函数:math.sqrt()

    查看全部
  • 1.面向对象编程

    是一种程序设计范式

    把程序看做不同对象的相互调用

    对现实世界建立对象模型

    基本思想:

    类:用于定义抽象类型

    实例:根据类的定义被创建出来

    2.

    在Python中,类通过 class 关键字定义

    Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的

    xiaoming = Person()

    sorted(L1,lambda p1,p2:cmp(p1.name,p2.name))排序

    self.__dict__.update(kw) 任意关键字参数

    def __init__(self, name):

            self.name = name

            self._title = 'Mr'

            self.__job = 'Student'


    只有以双下划线开头的"__job"不能直接被外部访问。但是,如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多

    预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。

    以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。

    3.

    类是模板,而实例则是根据类创建的对象

    实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。

    类属性是直接绑定在类上的,所以,访问类属性不需要创建实例,就可以直接访问:

    print Person.address 可以修改

    当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。

    实例的方法就是在类中定义的函数,它的第一个参数永远是 self

    方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法

    p1.get_grade = types.MethodType(fn_get_grade, p1, Person)

     @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls

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


    查看全部
  • 1.模块

    a.py 就是一个模块

    文件夹系统:包是文件夹 模块是xxx.py文件 __init__.py文件才能被当成python包

    引入模块

    import math

    from math import pow, sin, log 可以直接引用 pow, sin, log 这3个函数,但math的其他函数没有导入进来

    2.模块别名

    import... as...

    from math import log

    from logging import log as logger   # logging的log现在变成了logger

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

    try:

        from cStringIO import StringIO

    except ImportError:

        from StringIO import StringIO

    3.__future__模块

    from __future__ import division

    要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现

    Python 3.x已经改进了整数的除法运算,“/”除将得到浮点数,“//”除才仍是整数:


    4.安装第三方模块

    pip install web.py

    查找第三方模块:pypi.python.org


    查看全部
  • 问题的产生是因为函数只在执行时才去获取外层参数i,若函数定义时可以获取到i,问题便可解决。而默认参数正好可以完成定义时获取i值且运行函数时无需参数输入的功能,所以在函数f()定义中改为f(m = i),函数f返回值改为m*m即可.

    自己的理解:fs.append()只是把一个个的f加载进去,但是没有带参数,执行完这一系列以后i已经等于3,后面的只是。

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

    2018-04-15

  • 举报

    1动,-1不动,0相等


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

    2018-04-15

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

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

    2018-04-14

  • 我们自定义的类,它们本质上都是数据类型

    查看全部
  • 类的has关系

    查看全部
  • fs.append(f)

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

    2018-04-14

  • python内置的@语法可以简化装饰器调用

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

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

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

    查看全部

举报

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

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