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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 高阶函数
    查看全部
  • python中方法也是属性 因为方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法: 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) print p1.get_grade() # => A p2 = Person('Alice', 65) print p2.get_grade() # ERROR: AttributeError: 'Person' object has no attribute 'get_grade' # 因为p2实例并没有绑定get_grade 给一个实例动态添加方法并不常见,直接在class中定义要更直观。
    查看全部
  • IF 语句写法!!! def get_grade(self): if self.__score >= 80: return 'A' if self.__score >= 60: return 'B' return 'C'
    查看全部
  • 求两个数的最大公约数(辗转相除法) def gcd(a, b): if b == 0: return a return gcd(b, a % b)
    查看全部
  • 查看全部
    0 采集 收起 来源:课程介绍

    2017-05-29

  • 查看全部
    0 采集 收起 来源:课程介绍

    2017-05-29

  • 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 at 0x7f905e3ee578> >>>print p1.get_grade() A 解析: lambda: 'A'等价于return'A',相当于一个函数f,那么f()='A'.因此,p1.get_grade=f,p1.get_grade()=f() 就是这个意思,但没有说全 p1.get_grade是属性,只不过这里的属性是一个函数对象,即f p1.get_grade()是方法,前面的p1就是调用这个方法的对象,即实例,整句来说就是实例方法 直接把 lambda 函数赋值给 self.get_grade 和绑定方法有所不同,函数调用不需要传入 self,但是方法调用需要传入 self。
    查看全部
  • PY中方法也是属性 在class中定义的实例方法其实也是属性,实际上是一个函数对象 也就是说,p1.gett_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' 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) print p1.get_grade() # => A p2 = Person('Alice', 65) print p2.get_grade() # ERROR: AttributeError: 'Person' object has no attribute 'get_grade' # 因为p2实例并没有绑定get_grade
    查看全部
  • 四种不同的调用模块的方式,所要求的函数调用的方式也有所区别: import os---------------------------os.path.isdir import os.path----------------------path.isdir from os import path-----------------path.isdir from os.path import isdir, isfile---isdir
    查看全部
  • 如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。 要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。
    查看全部
    0 采集 收起 来源:python中 __len__

    2017-05-29

  • PY定义实例方法 一个实例或类的私有属性可以从类的内部进行修改和访问 除了可以定义实例的属性以外,还可以定义实例的方法 实例的方法就是在类中定义的函数,它的第一个参数永远是self,指向调用该方法的实例本 身 下面是 class Person(object): def __init__(self, name): self.__name = name def get_name(self): return self.__name 其中get_name(self)就是一个实例方法,__init__(self,name)可以看做一个特殊的实例方法 调用实例方法必须在实例上调用: p1 = Person('Bob') print p1.get_name() # self不需要显式传入 # => Bob 在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。
    查看全部
  • map(f,list)对list的每个元素执行f reduce(f,list,x)对list的每个元素递归地执行f,x作为初始值 filter(f,list)对list的每个元素执行f,然后仅仅输出f的返回值为真的元素,筛选
    查看全部
  • class Person(object): def __init__(self, name, gender, **kw): self.name = name self.gender = gender for k,v in kw.iteritems(): setattr(self,k,v) p = Person('Bob', 'Male', age=18, course='Python') print p.age print p.course
    查看全部
  • PY类属性和实例属性名字冲突 修改类属性会导致所有实例访问的类属性都受影响,那么如果在实例变量上修改类属性会发生什么问题? 当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问 class Person(object): address = 'Earth' def __init__(self, name): self.name = name p1 = Person('Bob') p1.address = 'China' # P1.address并没有改变Person的address,而是给p1这个实例绑定了实例属性address 当把p1的address实例属性删除后,访问p1.address就又返回类属性的值'earth‘了
    查看全部
  • reduce(f,list,x),对list的参数递归调用函数f,第三个参数x是函数f调用的初始值,第一部计算将对x和list的第一个元素执行函数f。
    查看全部

举报

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

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