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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 给一个实例动态添加方法,用 types.MethodType() 把一个函数变为一个方法(types需要先import):

    import types
    def fn_get_grade(self):
        if self.score >= 80:
            return 'A'
        if self.score >= 60:
            return 'B'
        return 'C'
    
    class Person(object):
        def __init__(self, name, score):
            self.name = name
            self.score = score
    
    p1 = Person('Bob', 90)
    p1.get_grade = types.MethodType(fn_get_grade, p1, Person)


    查看全部
  • 告诉python,当遇到该类时,怎样运算。并且在出现关键字时自动调用
    查看全部
  • 这种行为称为多态。也就是说,方法调用将作用在 x 的实际类型上。sStudent类型,它实际上拥有自己的 whoAmI()方法以及从 Person继承的 whoAmI方法,但调用 s.whoAmI()总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。

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

    2019-04-21

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


    利用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()函数接收的参数和 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。



    查看全部
  • def calc_prod(lst):

        def mm():

            def prod(x, y):

                return x*y

            return reduce(prod, lst)

        return mm


    f = calc_prod([1, 2, 3, 4])

    print f()


    查看全部
  • python中map()函数

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

    查看全部
  • import math

    def is_sqr(x):

        r=int(math.sqrt(x))

        return r*r==x

    print filter(is_sqr, range(1, 101))


    查看全部
  • 最后一行print f 和print f()

    如果return reduce() 是返回一个list ,打印不需要加括号

    return f 是返回一个函数,打印需要加括号

    查看全部
  • 加lazy_prod()的作用

    1.实现“延迟运算”的结果会这么做。

    2.就是装饰器的实现,通过这种定义方法,可以为某个函数增加功能,例如打印日志,打印性能,但是又不需要更改原来的函数。


    查看全部
  • u1 = s1[0].upper()

    记得upper后要加括号

    查看全部
  • sorted()函数默认对list从小到大进行排列。sorted函数的作用是接受一个比较函数对序列进行排列,而这个比较函数会根据返回值是-1,就会把 x 排在 y 前面,返回值是1,就会把 x 排在 y 后面,返回值为0,就把两者并排。sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较。

    查看全部
  • 导入模块,方法有:

    1. import math ,此时调用模块中函数使用math.pow(x,y)求幂函数

    2. from math import pow 该语句表示只导入该模块中的某些函数,调用方式为:pow(x,y)

    3. 在第一中方法中不会出现函数名字冲突问题,因为调用时候使用了模块名字,第二种就会重新命名冲突,此时可以将该函数起个“别名”来避免冲突,例如 from math import pow 暗示powww,此时也可以直接使用powww函数表示的即为使用math模块中的pow函数。




    查看全部
  • 一定记住不要漏掉self

    查看全部
  • py文件即为模块,不同的模块中同一个名字的遍历不受影响。应用第三方模块时候使用import 模块名 ,在调用该模块中方法属性时,使用 模块名.方法。解决模块名冲突我们将模块放入不同的包中,此时引用该模块即为import p1.math ,调用其内部方法即为print p1.matn.f(2,10)。在文件系统中,包就是文件夹,模块就是py文件,包也可以有多级。区分包与目录的方法,包下面必须有一个_init_.py文件,且每层都必须有,即便该文件为空文件。

    查看全部

举报

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

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