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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 学到这里, 越来越觉得这种层层嵌套的装饰的可读性很差, 你会觉得"如果我读到别人的代码里,有这种3,4层嵌套的装饰, 一定会疯掉"吗?
    查看全部
  • 緣来 decorator改变了函数的__name__、__doc__等其它属性,如果要让调用者看不出一个函数经过了@decorator的“改造”,就需要把原函数的一些属性复制到新函数中:wrapper.__name__ = f.__name__ wrapper.__doc__ = f.__doc__ 简单方法:Python内置的functools可以用来自动化完成这个“复制”的任务: import functools @functools.wraps(f) 由于我们把原函数签名改成了(*args, **kw),因此,无法获得原函数的原始*参数*信息。 即便我们采用固定参数来装饰只有一个参数的函数,也可能改变原函数的参数名,因为新函数的参数名始终是 'x',原函数定义的参数名不一定叫 'x'。 @functools.wraps应该作用在返回的新函数上。
    查看全部
  • 要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用: def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn 现在,对于任意函数,@log 都能正常工作。
    查看全部
  • 这里的做法, 感觉是对现有装饰函数进行了一次"再装饰" 另外注意 x=y if true else z的用法
    查看全部
  • 这节是前一节的扩展+练习, 知识点比较多: 1. 如何简单实现装饰器, 装饰器的作用是什么 2. @语法的本质是什么 3. *args,**kw是什么, 有什么作用 4. time.time()用法 5. "__name__"的用法 另外, 平时调试代码经常需要 @log 和 @performance
    查看全部
  • 答案中的reduce(f,lst,1)中, 这个1其实没啥用
    查看全部
  • 相较答案给出的编写方式, 我觉得用if - elif -else结构更有利于代码的可读性
    查看全部
  • 考点其实是如何判断一个数开平方后是否是整数 这里用的方法是, 先开方再取整, 然后再平方, 如果积与原数相等, 说明取整时没有丢失精度, 即开方是整数.
    查看全部
  • %s 字符串 %f 浮点数字(用小数点符号) if unit=='ms': t=(t2 - t1) * 1000 else : t=(t2 - t1) 等同与 t = (t2 - t1) * 1000 if unit=='ms' else (t2 - t1)
    查看全部
  • 很俏皮的首字母大写处理方式, 记一下, C#里没遇到过: def format_name(s): return s[0].upper() + s[1:].lower()
    查看全部
  • 说明变量可以指向一个函数,而且可以对该变量进行调用,同调用函数的效果是一样的
    查看全部
  • 装饰器作用实例
    查看全部
  • capitalize() 首字母大写,其余全部小写 upper() 全转换成大写 lower() 全转换成小写 title() 标题首字大写,如"i love python".title() "I love python
    查看全部
  • 返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-08-13

  • Python 支持的函数式编程
    查看全部

举报

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

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