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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 先看最里层,是一个二元函数,代表两个数相乘;中间层函数的返回值调用了一个reduce函数,意思是对lst里面的值依次调用f来计算(可以查看reduce的详细定义),lst初始值为1;最外层函数的返回值即中间层的结果。现在再按顺序读下去,这个calc_prod函数就是在对一个表里面的值不断调用f函数。ps:一定要把reduce的意思弄清楚!... 转自答疑区
    查看全部
  • 这块有点跳了
    查看全部
  • 做对了,但似是而非
    查看全部
    0 采集 收起 来源:python中闭包

    2017-06-10

  • class Person(object): 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) xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student') print xiaoming.name print xiaoming.job
    查看全部
  • 这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-06-09

  • sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。 sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较:ascii码表里是大写字母在前,小写字母在后。
    查看全部
  • functools.wraps(f) 装饰器中将原函数的属性批量赋予新函数 functools.partial
    查看全部
    0 采集 收起 来源:python中偏函数

    2017-06-09

  • sorted参数说明: (1) cmp参数 cmp接受一个函数,拿整形举例,形式为: def f(a,b): return a-b 如果排序的元素是其他类型的,如果a逻辑小于b,函数返回负数;a逻辑等于b,函数返回0;a逻辑大于b,函数返回正数就行了 (2) key参数 key也是接受一个函数,不同的是,这个函数只接受一个元素,形式如下 def f(a): return len(a) key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序 (3) reverse参数 接受False 或者True 表示是否逆序
    查看全部
    0 采集 收起 来源:python中偏函数

    2017-06-09

  • reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。reduce()还可以接收第3个可选参数,作为计算的初始值。 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回,返回结果仍为list。
    查看全部
  • s[0].upper() + s[1:].lower() 忘记前面切片的知识了。。。
    查看全部
  • 三层返回的函数是最内层那个
    查看全部
  • class Person(object): def __init__(self, name, score): self.name = name self.score = score def get_grade(self): return 'A' p1 = Person('Bob', 90) print p1.get_grade # => <bound method Person.get_grade of <__main__.Person object at 0x109e58510>> print p1.get_grade() # => A 也就是说,p1.get_grade 返回的是一个函数对象,但这个函数是一个绑定到实例的函数,p1.get_grade() 才是方法调用。 方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法: import types def fn_get_grade(self): if self.score >= 80: return 'A' if self.score >= 60: return 'B' return 'C' p1.get_grade = types.MethodType(fn_get_grade, p1, Person)
    查看全部
  • 1. 在Python中,函数其实是一个对象,由于 f 可以被调用,所以,f 被称为可调用对象。 2. 所有的函数都是可调用对象。 3. 通过__call__()可把一个类变成一个可调用的对象。例如: class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __call__(self, friend): print 'My name is %s...' % self.name print 'My friend is %s...' % friend >>> p = Person('Bob', 'male') >>> p('Tim') My name is Bob... My friend is Tim... 4. 单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。
    查看全部
    0 采集 收起 来源:python中 __call__

    2018-03-22

  • 1. 限制添加的属性,利用Python的一个特殊的__slots__来实现(顾名思义,__slots__是指一个类允许的属性列表)。例如,Student类只允许添加 name、gender和score 这3个属性: class Student(object): __slots__ = ('name', 'gender', 'score') def __init__(self, name, gender, score): self.name = name self.gender = gender self.score = score 2. __slots__的目的是限制当前类所能拥有的属性,如果不需要添加任意动态的属性,使用__slots__也能节省内存。 3. __slots__定义的属性仅对当前类起作用,对继承的子类是不起作用的。除非在子类中也定义__slots__,就像答案中一样,子类允许定义的属性就是自身的__slots__加上父类的__slots__。
    查看全部
    0 采集 收起 来源:python中 __slots__

    2017-06-08

  • 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果
    查看全部

举报

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

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