为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用 def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn
    查看全部
  • 常用装饰器
    查看全部
  • 1.作用:可以为函数动态增加功能,而不改变其本来的功能;避免重复性地输入一些常用代码(如@log可以避免每次都需要在函数中写入打印日志的相关语句) 2.本质:使用高阶函数接受一个函数f,对其包装,然后返回一个新函数(对f函数进行更新)
    查看全部
  • 使用匿名函数,可以不必定义函数名,直接创建一个函数对象,很多时候可以简化代码
    查看全部
  • 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数 >>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果
    查看全部
  • 1.在函数内部定义的函数和外部定义的函数是一样的,只是他们无法被外部访问 2.内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure) 3.闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变 4.返回函数不要引用任何循环变量,或者后续会发生变化的变量
    查看全部
    0 采集 收起 来源:python中闭包

    2015-03-29

  • 1.函数calc_sum(lst)的返回值是另一个函数lazy_sum。所以令f = calc_sum([1, 2, 3, 4]),等于lazy_sum这个函数的函数名。 2.事实上此时lazy_sum()的返回值已经决定了,就是return sum(lst)。这个函数是不需要输入参数的。所以当我们再次调用f()就相当于调用了lazy_sum(),可以得到结果10. 3.而这个函数名事实上是不能被单独调用的(因为其包含在calc_sum(lst)这个函数内部)。所以我们只能使用f()的这种方法对其进行调用事实上f() = calc_sum(lst)() 4.总结一下: f = lazy_sum 函数的函数名 f() = 'lazy_sum()'(不能单独运行) = sum(lst) = calc_sum(lst)() 5.g = f(a) 此式子所表示的含义是g等于函数f在参数为a时候的'返回值'
    查看全部
  • Python的lambda匿名函数 http://blog.sina.com.cn/s/blog_6163bdeb01018046.html
    查看全部
    0 采集 收起 来源:python中闭包

    2015-03-29

  • 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。举例如下:
    查看全部
    0 采集 收起 来源:python中闭包

    2015-03-29

  • def calc_prod(lst): def lazy_prod(): def f(x,y): return x*y return reduce(f,lst,1) return lazy_prod f = calc_prod([1, 2, 3, 4]) print f()
    查看全部
  • import time def performance(unit): def per_decorator(f): def wrapper(*args, **kw): t1 = time.time() r = f(*args, **kw) t2 = time.time() t = (t2 - t1) * 1000 if unit == 'ms' else (t2-t1) print 'call %s() in %f %s' %(f.__name__, t, unit) return r return wrapper return per_decorator @performance('ms') def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10)
    查看全部
  • 比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。 cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
    查看全部
  • def cmp_ignore_case(s1, s2): r1 = s1.lower() r2 = s2.lower() if r1 > r2: return 1 if r1 < r2: return -1 return 0 print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
    查看全部
  • 打印日志: @log 检测性能: @performance 数据库事务: @transaction URL路由: @post('/register')
    查看全部
  • import math def is_sqr(x): r = int(math.sqrt(x)) //定义新的参数 return r**2 == x print filter(is_sqr, range(1, 101))
    查看全部

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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