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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 私有属性是已__开头的属性,无法被外部访问,但是从类的内部是可以访问的。除了可以定义实例的属性外,还可以定义实例的方法。 实例的方法就是在类中定义的函数,他的第一个参数永远是self,指向调用该方法的实例本身,其他参数和一个普通参数完全一样的: get_name(self)就是一个实例方法,他的第一个参数是self。__init__(self,name)其实也可以看作是一个特殊实例的方法。 在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致外,还可以简化外部调用的难度。
    查看全部
  • 假定场景:已经定义了一个函数,想在运行时动态增加功能,又不像改动函数本身的代码
    查看全部
  • 解释器内部会将**kw拆分成对应的dict. setattr()方法接受3个参数:setattr(对象,属性,属性的值) setattr(self,k,v)相当于self.k = v kw.iteritems()历遍字典kw的所有key和value,分别匹配k,v
    查看全部
  • 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。 匿名函数 lambda x: x * x 实际上就是 def f(x): return x * x map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。 返回函数的时候,也可以返回匿名函数
    查看全部
  • print f1(), f2(), f3() 方法:问题的产生是因为函数只在执行时才去获取外层参数i,若函数定义时可以获取到i,问题便可解决。而默认参数正好可以完成定义时获取i值且运行函数时无需参数输入的功能,所以在函数f()定义中改为f(m = i),函数f返回值改为m*m即可. 时间: 2016-02-10 411 s.append(f),只是将每一个f()的引用保存进了list,并没有进行对于i的计算,所以导致最后在运行了f(1)之后,i已经变为了3,所以会一样结果都为9.只要将这里改为fs.append(f())即可,这样就在这一步的时候已经进行了i*i的运算,将结果保存了,通过这一题可以注意到在python这门语言之中,f与f()的大区别。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-08-24

  • 内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。返回函数不要引用任何循环变量,或者后续会发生变化的变量。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-08-24

  • Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数!返回函数可以把一些计算延迟执行。 def f(): print 'call f()...' # 定义函数g: def g(): print 'call g()...' # 返回函数g: return g >>> x = f() # 调用f() call f()... >>> x # 变量x是f()返回的函数: <function g at 0x1037bf320> >>> x() # x指向函数,因此可以调用 call g()... # 调用x()就是执行g()函数定义的代码
    查看全部
  • filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
    查看全部
  • 1、sorted()函数可对list进行排序 2.1、正序排列sorted([36, 5, 12, 9, 21]), 2.2、倒序排列sorted([36, 5, 12, 9, 21],reversed_cmp) def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0 有个内置函数与刚才定义的reversed_cmp函数相反的作用 cmp(x,y) 内部是使用的Timsort算法
    查看全部
  • reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算: reduce(f, [1, 3, 5, 7, 9], 100) 结果将变为125,因为第一轮计算是: 计算初始值和第一个元素:f(100, 1),结果为101。
    查看全部
  • reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。 例如,编写一个f函数,接收x和y,返回x和y的和: def f(x, y): return x + y 调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算: 先计算头两个元素:f(1, 3),结果为4; 再把结果和第3个元素计算:f(4, 5),结果为9; 再把结果和第4个元素计算:f(9, 7),结果为16; 再把结果和第5个元素计算:f(16, 9),结果为25; 由于没有更多的元素了,计算结束,返回结果25。
    查看全部
  • 公共的参数跑一遍之后只会保留最后一个,因为只有一个地址;私有的参数每跑一个都会在新的地址中存起来,所以调用的时候会调用出来。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-08-24

  • 不能同时写__init__和__call__的原因是__init__方法没有接到参数。 解决办法: def __init__(self): pass
    查看全部
    0 采集 收起 来源:python中 __call__

    2017-08-24

  • 固定格式:super(最近的类名,self).__init__(在被继承的类中出现过的属性)
    查看全部
    0 采集 收起 来源:python中 __slots__

    2017-08-24

  • @property---这是关键字,固定格式,能让方法当“属性”用。 @score.setter---前面的"score"是@property紧跟的下面定义的那个方法的名字,"setter"是关键字,这种“@+方法名字+点+setter”是个固定格式与@property搭配使用。 这里注意到一个细节,就是把score定义成了私有属性__score,而我们根据前面的知识了解到私有属性在类外是不能够直接访问的,必须通过方法调用的方式,而装饰器函数又恰好把方法装饰成了属性调用,所以这里调用属性其实就是调用方法,返回的是私有属性
    查看全部
    1 采集 收起 来源:python中 @property

    2018-03-22

举报

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

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