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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • p1.get_grade返回的是一个函数对象,但这个函数是一个绑定到实例的函数,p1.get_grade()才是方法调用。<br> 因为方法也是一个属性,所以,它可以动态的添加到实例上,只是需要用types.MethodType()把一个函数变为一个方法。 本节所学的‘方法也是属性’,其实是上节‘类的私有属性’的延伸,只不过把在类中定义的实例私有函数,放到了外边(创建类之前),重新建立了一个外部的函数,然后借助types.MethodType(fn,p1,Person)函数来调用这个函数的方法来执行。 p1.get_grade 返回一个函数 p1.get_grade() 返回一个函数的值,因为带括号,就意味着函数的执行
    查看全部
  • 初始化父类
    查看全部
  • 这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变
    查看全部
    0 采集 收起 来源:python中闭包

    2016-05-11

  • map(f,L):用对L的每个元素使用f,返回一个list reduce(f,L[,init]):每次迭代,将上一次的迭代结果(第一次时为init的元素,如没有init则为seq的第一个元素)与下一个元素一同执行一个二元的f函数。在reduce函数中,init是可选的,如果使用,则作为第一次迭代的第一个元素使用 filter(f,L):对L中的每个元素执行f,满足条件的保留,不满足的剔除,返回满足条件的元素组成的list sorted(L[,f]):对L按照f的定义进行排序,f(a,b)的规则:如果a应该在b的前面,则返回-1,a在b的后边,返回1,否则返回0
    查看全部
  • 访问 p1.address 时,优先查找实例属性,返回'China'。 访问 p2.address 时,p2没有实例属性address,但是有类属性address,因此返回'Earth'。 可见,当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。
    查看全部
  • 实例的私有属性就是以_开头的属性,无法从外部访问,但是从类的内部是可以访问的。除了定义实例的属性外,还可以定义实例的方法。 实例的方法就是在类中定义的函数,它的第一个参数永远是self(不需要显式传入),其他参数和一个普通函数是一样的。 从内部访问实例的私有属性,要用return,返回调用的函数的本身.注意语言的连贯性,if 后面要跟 self.__score,才能上传到上一步init函数的score变量里面. 实例的私有属性可以通过函数内部的实例方法来调用。
    查看全部
  • @property @score.setter 第一个score(self)是get方法,用@property装饰,第二个score(self, score)是set方法,用@score.setter装饰,@score.setter是前一个@property装饰后的副产品。
    查看全部
    0 采集 收起 来源:python中 @property

    2016-05-11

  • 不理解闭包的含义。
    查看全部
    0 采集 收起 来源:python中闭包

    2016-05-11

  • 函数名就是指向函数的变量,函数名何以赋值给一个变量,比如f=abs,这样执行f(-10),就是执行abs(-10),结果就是10。 函数名还可以被赋值。比如abs = len,那么此时执行abs(-10)就会报错,因为等于在执行len(-10),运行abs([1,2,3]),结果就等于3。 高阶函数,就是可以接收函数作为变量的函数
    查看全部
  • 一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。 我们把 Person 类变成一个可调用对象: 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 现在可以对 Person 实例直接调用: >>> p = Person('Bob', 'male') >>> p('Tim') My name is Bob... My friend is Tim... 单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。
    查看全部
    0 采集 收起 来源:python中 __call__

    2018-03-22

  • __slots__的目的是限制当前类所能拥有的属性,如果不需要添加任意动态的属性,使用__slots__也能节省内存。 __slots__ = ('name', 'gender', 'score') 表示对象只能动态添加这3个属性。
    查看全部
    0 采集 收起 来源:python中 __slots__

    2016-05-11

  • 因为Python支持高阶函数,在函数式编程中我们介绍了装饰器函数,可以用装饰器函数把 get/set 方法“装饰”成属性调用: class Student(object): def __init__(self, name, score): self.name = name self.__score = score @property def score(self): return self.__score @score.setter def score(self, score): if score < 0 or score > 100: raise ValueError('invalid score') self.__score = score 注意: 第一个score(self)是get方法,用@property装饰,第二个score(self, score)是set方法,用@score.setter装饰,@score.setter是前一个@property装饰后的副产品。 现在,就可以像使用属性一样设置score了: >>> s = Student('Bob', 59) >>> s.score = 60 >>> print s.score 60 >>> s.score = 1000 Traceback (most recent call last): ... ValueError: invalid score 说明对 score 赋值实际调用的是 set方法。
    查看全部
    0 采集 收起 来源:python中 @property

    2018-03-22

  • Python里头有3种除法: 地板除法:用//表示,不管操作数为何种数值类型,总是会舍去小数部分,返回数字序列中比真正的商小的最接近的数字。比如 1//2 = 0, 1.0//2= 0。 传统除法:用/表示,对整数之间的/,执行地板除,但对有浮点数参与的除法则执行传统意义上的除法。比如 1/2 = 0, 1.0/2=0.5。 精确除法:如果你想让上面的传统除法,更"传统",你就应该调用 from __future__ import division,这样以后/就真的变成传统意义上的传统除法了。比如,1/2=0.5, 1.0/2=0.5。 注意以上讲的是针对Python 2.6+版本的,对于Python 3+,传统除法被废除了,也就是说只有地板除和精确除法,分别用//和/表示,且不用调用 from __future__ import division。
    查看全部
  • python所支持的函数式编程
    查看全部
  • 函数式编程的特点
    查看全部

举报

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

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