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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • get_grade是Person类的属性之一,指向匿名函数lambda,所以打印出为地址名。

    get_grade()为调用lambda函数,函数返回字符'A',故能打印出A

    查看全部
  • 如果使用 from...import 导入 log 函数,势必引起冲突。这时,可以给函数起个“别名”来避免冲突:

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


    查看全部
  • __slots__是指一个类允许的属性列表,__slots__的目的是限制当前类所能拥有的属性,如果不需要添加任意动态的属性,使用__slots__也能节省内存,Student类的__slots__只需要包含Person类不包含的score属性即可。初始化父类属性

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

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

    2019-07-02

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

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

    Python提供了open()函数来打开一个磁盘文件,并返回 File 对象。File对象有一个read()方法可以读取文件内容。任何对象,只要有read()方法,就称为File-like Object,都可以传给json.load()。

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

    2019-07-02

  • p1.get_grade 返回的是一个函数对象,但这个函数是一个绑定到实例的函数,p1.get_grade() 才是方法调用。

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

    直接把 lambda 函数赋值给 self.get_grade 和绑定方法有所不同,函数调用不需要传入 self,但是方法调用需要传入 self。

    查看全部
  • 只有以双下划线开头的"__job"不能直接被外部访问。

    很多预定义的特殊属性使用"__xxx__"的形式定义,可以被外部访问了,通常不要把普通属性用"__xxx__"定义。

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


    查看全部
  • __init__() 方法的第一个参数必须是 self,创建实例时,就必须要提供除 self 以外的参数。每个Person实例在创建时,都会有 name、gender 和 birth 这3个属性,并且,被赋予不同的属性值,访问属性使用.操作符。

    要定义关键字参数,使用 **kw;

    除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。

    def __init__(self, name, gender, birth, **kw):
            self.name = name
            self.gender = gender
            self.birth = birth
            for k, v in kw.iteritems():
                setattr(self, k, v)
    查看全部
  • __int__.py

    查看全部
  • 利用匿名函数简化代码 lambda x: x * x 实际上就是:

    def f(x):
        return x * x

    匿名函数只能有一个表达式,不写return,返回值就是该表达式的结果。

    查看全部
  • 如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0

    查看全部
  • from __future__ import division 在Python 2.7中引入3.x的除法规则:“/”除将得到浮点数,“//”除才仍是整数

    from __future__ import unicode_literals 把Python 3.x的unicode规则带入Python 2.7中

    查看全部
  • 如果导入的模块不存在,Python解释器会报 ImportError 错误。

    要提高Python代码的运行速度,最简单的方法是把某些关键函数用 C 语言重写。

    try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。

    利用import ... as ...,可以动态导入不同名称的模块。

    查看全部
  • 导入系统自带的模块 math:

    import math

    给函数起个“别名”来避免冲突

    from math import log
    from logging import log as logger   # logging的log现在变成了logger
    print log(10)   # 调用的是math的log
    logger(10, 'import from logging')   # 调用的是logging的log

    os.path模块可以以若干种方式导,每一种方式调用 isdir 和 isfile 都有所不同:

    import os
    import os.path
    from os import path
    from os.path import isdir, isfile
    查看全部
  • filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

    例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:

    def is_odd(x):
        return x % 2 == 1

    然后,利用filter()过滤掉偶数:

    filter(is_odd, [1, 4, 6, 7, 9, 12, 17])

    结果:[1, 7, 9, 17]

    利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串:

    def is_not_empty(s):
        return s and len(s.strip()) > 0
    filter(is_not_empty, ['test', None, '', 'str', '  ', 'END'])

    结果:['test', 'str', 'END']

    注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。

    当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:

    a = '     123'
    a.strip()

    结果: '123'

    a='\t\t123\r\n'
    a.strip()

    结果:'123'


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


    reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算:

    reduce(f, [1, 3, 5, 7, 9], 100)

    结果将变为125,因为第一轮计算是:

    计算初始值和第一个元素:f(100, 1),结果为101。


    查看全部

举报

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

微信扫码,参与3人拼团

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

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