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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 请修改 Student 的 __cmp__ 方法,让它按照分数从高到底排序,分数相同的按名字排序。

    class Student(object):


        def __init__(self, name, score):

            self.name = name

            self.score = score


        def __str__(self):

            return '(%s: %s)' % (self.name, self.score)


        __repr__ = __str__


        def __cmp__(self, s):

            if False == isinstance(s, Student):

                return -1

            return -cmp(self.score, s.score) or cmp(self.name, s.name)



    L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 99)]

    print sorted(L)


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

    2018-10-05

  • 对于Person类的定义:

    class Person(object):
        def __init__(self, name, gender):
            self.name = name
            self.gender = gender

    希望除了 name和gender 外,可以提供任意额外的关键字参数,并绑定到实例,请修改 Person 的 __init__()定 义,完成该功能。


    class Person(object):


        def __init__(self, name, gender, **kw):

            self.name = name

            self.gender = gender

            for k, v in kw.items():

                setattr(self, k, v)


    p = Person('Bob', 'Male', age=18, course='Python')

    print p.age

    print p.course


    查看全部
  • Python调用实例方法,不检查类型,只看方法是否存在

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

    2018-10-05

  • 在实例方法内部,可以访问所有实例属性

    查看全部
  • 1.高阶函数:函数调用函数
    2.闭包        : 外层是带参数的函数,内层函数调用了外层的参数
    3.装饰器   :就是高阶函数的应用,把函数做参数调用,包装一下,再返回函数
    4.带参数的装饰器:就是外面又套了一层的函数

    log_decorator = log('Debug')
    log = log_decorator(log)

    查看全部
  • functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了

    查看全部
    0 采集 收起 来源:python中偏函数

    2018-10-05

  • @log('DEBUG')
    def my_func():
        pass
    my_func = log('DEBUG')(my_func)
    log_decorator = log('DEBUG')
    my_func = log_decorator(my_func)
    log_decorator = log('DEBUG')
    my_func = log_decorator(my_func)
    四个等价


    查看全部
  • Python time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。

    Python time strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。

    查看全部
  • 当高阶函数设置完成之后,任意函数都可以作为高阶函数后面的参数进行传递调用。只不过还需要在需要添加额外功能的函数前面加上“@高阶函数”,结合本节:@performance用来装饰factorial()。同样其他函数也能调用。

    此外,performance(f)中的f即为调用装饰器的factorial()

    查看全部
  • 使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。

    对于参数不是一个的函数,调用将报错

    定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数(可以是数,也可以是list或tuple)。在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去.

    *args是可变参数,args接收的是一个tuple

    **kw是关键字参数,kw接收的是一个dict


    查看全部
  • Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数

    使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写f = decorate(f) 这样的代码

    因为 add() 函数需要传入两个参数,但是 @log 写死了只含一个参数的返回函数

    要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用

    查看全部
  • 与类和实例无绑定关系的function都属于函数(function)
    与类和实例有绑定关系的function都属于方法(method)

    查看全部
  • 包与模块: 包内必须有__init__.py 文件 包相当于文件夹 模块相当于一个py文件
    查看全部
  • # 希望一次返回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()

    认为调用f1(),f2()和f3() 结果应该是1,4,9,

    但实际结果全部都是 9 

    原因:

    f1, f2, f3 = count()

    结果为 f1=f,f2=f,f3=f  ,并没有调用f()函数;

    当调用f1()f2()f3()时,就相当于调用了f()

    但此时 i 已经变成了

    所以 f()函数return i*i 的结果为 3*3 = 9


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

    2018-10-02

  • 当实例属性和类属性重名时,实例属性优先级高

    查看全部

举报

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

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