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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。 C++思想~~~~~~~~
    查看全部
  • 我们发现,在设置了 p1.address = 'China' 后,p1访问 address 确实变成了 'China',但是,Person.address和p2.address仍然是'Earch',怎么回事? 原因是 p1.address = 'China'并没有改变 Person 的 address,而是给 p1这个实例绑定了实例属性address ,对p1来说,它有一个实例属性address(值是'China'),而它所属的类Person也有一个类属性address,所以: 访问 p1.address 时,优先查找实例属性,返回'China'。 访问 p2.address 时,p2没有实例属性address,但是有类属性address,因此返回'Earth'。 可见,当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。 当我们把 p1 的 address 实例属性删除后,访问 p1.address 就又返回类属性的值 'Earth'了: del p1.address print p1.address # => Earth
    查看全部
  • class Person(object): def __init__(self, name, score): self.name=name self.__score=score p = Person('Bob', 59) print p.name try: print p.__score except(AttributeError): print 'attributeerror' Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__)
    查看全部
  • def calc_prod(lst): def a(): print 5 def f(x,y): print 1 return x*y print 2 return reduce(f,lst) print 3 return a print 4 f = calc_prod([1, 2, 3, 4]) print f() 输出 3 5 2 1 1 1 24
    查看全部
  • 实例的属性可以像普通变量一样进行操作: xiaohong.grade = xiaohong.grade + 1
    查看全部
  • Python的新版本会引入新的功能,但是,实际上这些功能在上一个老版本中就已经存在了。要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现。
    查看全部
  • try: from cStringIO import StringIO except ImportError: from StringIO import StringIO 上述代码先尝试从cStringIO导入,如果失败了(比如cStringIO没有被安装),再尝试从StringIO导入。这样,如果cStringIO模块存在,则我们将获得更快的运行速度,如果cStringIO不存在,则顶多代码运行速度会变慢,但不会影响代码的正常执行。 try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。
    查看全部
  • 实例的方法就是在类中定义的函数,它的第一个参数永远是 self,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的: class Person(object): def __init__(self, name): self.__name = name def get_name(self): return self.__name get_name(self) 就是一个实例方法,它的第一个参数是self。__init__(self, name)其实也可看做是一个特殊的实例方法。 调用实例方法必须在实例上调用: p1 = Person('Bob') print p1.get_name() # self不需要显式传入 # => Bob 在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。
    查看全部
  • def count(): fs = [] for i in range(1, 4): def f(j): def g(): return j*j return g fs.append(f(i)) return fs f1, f2, f3 = count() print f1(), f2(), f3() 嵌套闭包。 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-10-26

  • list函数append与extend的区别:前者的参数可以是任何类型,把元素加入到list中;后者的参数必须是list类型,把它和原list合并。 >>> a = [1, 2, 3] >>> a.append([4, 5]) >>> a [1, 2, 3, [4, 5]] >>> a.extend([4, 5]) >>> a [1, 2, 3, [4, 5], 4, 5]
    查看全部
    0 采集 收起 来源:python中闭包

    2018-03-22

  • 使用匿名函数,可以不必定义函数名,直接创建一个函数对象,很多时候可以简化代码: >>> sorted([1, 3, 9, 5, 0], lambda x,y: -cmp(x,y)) [9, 5, 3, 1, 0]
    查看全部
  • filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
    查看全部
  • reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
    查看全部
  • map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回.
    查看全部
  • 内层函数引用外层函数的局部变量(参数也算变量),然后返回内层函数的情况,称为闭包 注意:局部变量在函数返回的过程中,不可以改变。即:返回必包:返回函数不可以引用任何循环变量,或后续会发生变化的变量。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-10-25

举报

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

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