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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。
    查看全部
  • 实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。
    查看全部
  • Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。 但是,如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。 以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。
    查看全部
  • - 返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。 - f1, f2, f3 = count(),这句话的意思是f1=count()[0],f2=count()[1],f3=count()[2].这种赋值语句只能用于数组,一一对应 - python中,f和f()不一样,f表示f函数对象,f()表示执行f函数
    查看全部
    0 采集 收起 来源:python中闭包

    2017-08-17

  • 继承而来的类只需要把额外的属性加上。 一定要用super(Student,self).__init__(name,gender)去初始化父类,否则,继承Person的Student将没有name和gender。 self参数已在super()中传入,在__init__()将隐式传递,不需要写出,也不能写出。
    查看全部
  • # -*- coding: utf-8 -*- # 请利用filter()过滤出1~100中平方根是整数的数,即结果应该是: # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] import math def is_sqr(x): y=int(math.sqrt(x)) if y*y==x: return x print filter(is_sqr, range(1, 101))
    查看全部
  • # -*- coding: utf-8 -*- # Python内置了求和函数sum(),但没有求积的函数,请利用recude()来求积: # 输入:[2, 4, 5, 7, 12] # 输出:2*4*5*7*12的结果 def prod(x, y): return x*y print reduce(prod, [2, 4, 5, 7, 12]) # 3360
    查看全部
  • #filter() 接收的函数必须判断出一个数的平方根是否是整数,而 math.sqrt()返回结果是浮点数。 import math def is_sqr(x): r=int(math.sqrt(x)) return r*r==x print filter(is_sqr, range(1, 101))
    查看全部
  • # -*- coding: utf-8 -*- # 假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则, # 请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list: # 输入:['adam', 'LISA', 'barT'] # 输出:['Adam', 'Lisa', 'Bart'] def format_name(s): return s[0].upper()+s[1:].lower() print map(format_name, ['adam', 'LISA', 'barT']) map()函数不改变原有的 list,而是返回一个新的 list。 利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。
    查看全部
  • import math def add(x, y, f): return f(x) + f(y) print add(25, 9, math.sqrt) #8.0
    查看全部
  • 考察一个@log的定义: def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn 对于阶乘函数,@log工作得很好: @log def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10) 结果: call factorial()... 3628800 但是,对于参数不是一个的函数,调用将报错: @log def add(x, y): return x + y print add(1, 2) 结果: Traceback (most recent call last): File "test.py", line 15, in <module> print add(1,2) TypeError: fn() takes exactly 1 argument (2 given) 因为 add() 函数需要传入两个参数,但是 @log 写死了只含一个参数的返回函数。 要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用: def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn 现在,对于任意函数,@log 都能正常工作。
    查看全部
  • 添加how_many方法是讲私有变量值传递出去?
    查看全部
  • Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。
    查看全部
  • p1.get_grade返回的是一个函数对象,但是这个函数是一个绑定到实例的函数,p1.get_grade()才是方法调用。因为方法也是属性,所以,他也可以动态地添加到实例上,只是需要用types.MethodType()把一个函数变为一个方法。
    查看全部
  • 有了类的定义,就可以创建出具体的实例,创建实例使用类名+()的方式,类似函数调用的形式创建。
    查看全部

举报

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

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