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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • PY编写带参数装饰器 @log('DEBUG') 等价于 my_fun = log('DEBUG')(my_fun) def my_fun(): pass 再展开 log_decorator = log('DEBUG') log_decorator = log('DEBUG') 等价于 @log_decorator my_fun = log_decorator(my_fun) def my_fun(): pass 所以带参数的log函数首先返回一个decorator函数,再让这个装饰器函数接受my_fun并返回新函数 def log(prefix): def log_decorator(f): def wrapper(*args, **kw): print '[%s] %s()...' % (prefix, f.__name__) return f(*args, **kw) return wrapper return log_decorator @log('DEBUG') def test(): pass print test() 这种三层嵌套的decorator定义,可以这样拆开 1.标准decorator def log_decorator(f): def wrapper(*args,**kw): print '[%s] %s()...' % (prefix,f.__name__) return f(*args,**kw) return wrapper return log_decorator 2.返回decorator def log(prefix): return log_decorator(f) 调用失败的原因是在3层嵌套的decorator定义中,最内层的wrapper引用了最外层的prefix
    查看全部
  • a, b = b, a+b等价于 x=a a=b b=x+a a, b = b, a+b写法的好处是,先让a=b,轮到给b赋值的时候a的值没有变,省略了保存中间值a的过程
    查看全部
    0 采集 收起 来源:python中 __len__

    2017-05-10

  • Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数。 函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式
    查看全部
    0 采集 收起 来源:python中 __len__

    2017-05-10

  • 在定义 Person 类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上以下属性: class Person(object): def __init__(self, name, gender, birth): self.name = name self.gender = gender self.birth = birth __init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。 要特别注意的是,初学者定义__init__()方法常常忘记了 self 参数: 这会导致创建失败或运行不正常,因为第一个参数name被Python解释器传入了实例的引用,从而导致整个方法的调用参数位置全部没有对上。
    查看全部
  • 返回函数不要引用任何循环变量,或者后续会发生变化的变量
    查看全部
    0 采集 收起 来源:python中闭包

    2017-05-10

  • 任务 请编写一个@performance,它可以打印出函数调用的时间。 import time def performance(f): def fn(*args,**kw): t = time.strftime('%Y-%m-%d',time.localtime(time.time())) r = f(*args,**kw) print 'call' + f.__name__ + '() in' + t return r return fn @performance def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10)
    查看全部
  • count()函数是返回fs这个list,这个list中的元素是函数而不是数字,就像[f(),f(),f()], f1,f2,f3=count() 就是f1,f2,f3=[f(),f(),f()] 当然这个f()是count里面的, 第一个f()赋给了f1,第二个f()赋给了f2,...这样赋值方法 prin f1()打印出来的是值 print f1 打印出来的是函数
    查看全部
    0 采集 收起 来源:python中闭包

    2017-05-10

  • 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了:
    查看全部
    0 采集 收起 来源:python中 @property

    2018-03-22

  • 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变
    查看全部
    0 采集 收起 来源:python中闭包

    2017-05-10

  • functools.wrap(f),可以自动完成复制的任务
    查看全部
  • 返回函数可以把一些计算延迟执行
    查看全部
  • python 中返回函数:
    查看全部
  • python函数特点
    查看全部
    0 采集 收起 来源:课程总结

    2017-05-10

  • >>> print sorted([5, 2, 3, 1, 4], reverse=True) [5, 4, 3, 2, 1] >>> print sorted([5, 2, 3, 1, 4], reverse=False) [1, 2, 3, 4, 5]
    查看全部
    0 采集 收起 来源:python中 __cmp__

    2018-03-22

  • L = [('b',2),('a',1),('c',3),('d',4)] print sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) print sorted(L, key=lambda x:x[1])) 结果等效 注:效率key>cmp(key比cmp快)
    查看全部
    0 采集 收起 来源:python中 __cmp__

    2018-03-22

举报

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

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