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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 要比较两个实例是否相等,用==操作符

    查看全部
  • 由于属性可以是普通的值对象,如 str,int 等,也可以是方法,还可以是函数,大家看看下面代码的运行结果,请想一想 p1.get_grade 为什么是函数而不是方法:

    class Person(object):
        def __init__(self, name, score):
            self.name = name
            self.score = score
            self.get_grade = lambda: 'A'
    
    p1 = Person('Bob', 90)
    print p1.get_grade
    print p1.get_grade()
    • ?不会了怎么办

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


    查看全部
  • 1.x=f()和f()都是调用外层函数的代码,并且返回函数(这里返回的是函数g,其实看似没有返回函数,实际上返回了我们没有看到而已)
    2.x这样是直接表示x这个变量,而这个变量表示的是函数f的返回值(即函数g),而并不会调用函数f()(因为只有有了括号在函数名之后,才算是调用,x直接表达的是变量x,即返回的函数)
    3.x()相当于g(),因为x变量本来就被赋值为g了,在后面加上括号意思就是调用g函数的代码


    查看全部
  • 查看全部
  • L2 = sorted(L1, lambda p1, p2: cmp(p1.name, p2.name))

    对象,规则) 是高阶函数,lambda是匿名函数,cmp是比较大小的函数,就是相当于自己制定规则对L1排序保存到L2中。

    “Person()类是你自己定义的数据类型,python不知道如何进行比较,故你要告诉python你定义的数据的比较规则(lambda x,y: cmp(x.name,y.name)),cmp(x.name,y.name)函数就是定义的比较规则。知道规则后python才能帮你排序。并不会取出元素组成新的list再比较。”

    p1,p2就是每次从列表取的两个对象进行比较

    查看全部

  • import time
    def performance(f):
        def fn(*args, **kw):
            t1 = time.time()
            r = f(*args, **kw)
            t2 = time.time()
            print 'call %s() in %fs' % (f.__name__, (t2 - t1))
            return r
        return fn

    @performance
    def factorial(n):
        return reduce(lambda x,y: x*y, range(1, n+1))
    print factorial(10)

    查看全部
  • 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。


    查看全部
  • 不要忘记调用super().__init__

    查看全部
  • 发现没法把 lazy_sum 移到 calc_sum 的外部,因为它引用了 calc_sum 的参数 lst

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

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

    返回函数不要引用任何循环变量,或者后续会发生变化的变量。

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

    2019-05-24

  • sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0

    查看全部
  • s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符

    查看全部
  • reduce()函数传入的函数f必须要接收两个参数。

    reduce()还可以接收第三个可选参数,作为计算的初始值。

    查看全部
  • upper() 与 lower()

    大写字母 与 小写字母

    查看全部
  • map()函数是内置高阶函数,他接收一个函数和一个list,并且函数f依次作用在list的每个元素上,得到一个新的list并返回。

    查看全部
  • **kw

    for k, w in kw.iteritems():

       setattr(self,k,w)


    这个不会

    查看全部

举报

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

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