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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 由于Python的动态特性,json.load()并不一定要从一个File对象读取内容。任何对象,只要有read()方法,就称为File-like Object,都可以传给json.load()。
    查看全部
    0 采集 收起 来源:python中多态

    2016-05-02

  • functools可以用来自动化伪装函数没有经过装饰器的样子: import functools def log(f): (4个空格) @functools.wraps(f) (4个空格) def wrapper(*args, **kw): (8个空格) print 'call...' (8个空格) return f(*args, **kw) (4个空格) return wrapper 但即使这样,也无法伪装函数经过装饰器后参数名可能的改变
    查看全部
  • @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用: def log(f): (4个空格) def fn(*args, **kw): (8个空格) print 'call ' + f.__name__ + '()...' (8个空格) return f(*args, **kw) (4个空格) return fn
    查看全部
  • python3中要使用reduce,得从functools中引入加上 from functools import reduce 才能够用。
    查看全部
  • 装饰器的作用
    查看全部
  • @语法简化装饰器的调用
    查看全部
  • 通过高阶函数返回新函数
    查看全部
  • 内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)
    查看全部
    0 采集 收起 来源:python中闭包

    2016-05-01

  • 闭包的返回函数不要引用任何循环变量,或者后续会发生变化的变量。 例如,希望一次返回3个函数,分别计算1x1,2x2,3x3: def count(): (4个空格) fs = [] (4个空格) for i in range(1, 4): (8个空格) def f(): (12个空格) return i*i (8个空格) fs.append(f) (4个空格) return fs f1, f2, f3 = count() 运行结果:f1(),f2(),f3()都为9,因为当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3。由于f1、f2、f3并没有被调用,所以,此时他们并未计算 i*i, 正确: def count(): (4个空格) fs = [] (4个空格) for i in range(1, 4): (8个空格) def f(j): (12个空格) def g(): (16个空格) return j*j (12个空格) return g (8个空格) r = f(i) (8个空格) fs.append(r) (4个空格) return fs f1, f2, f3 = count()
    查看全部
    0 采集 收起 来源:python中闭包

    2016-05-01

  • 返回函数可以把一些计算延迟执行。例如,定义一个普通的求和函数: 普通: def calc_sum(lst): (4个空格) return sum(lst) 运行: >>> calc_sum([1, 2, 3, 4]) 10 返回函数: def calc_sum(lst): (4个空格) def lazy_sum(): (8个空格) return sum(lst) (4个空格) return lazy_sum 运行: >>> f = calc_sum([1, 2, 3, 4]) >>> f <function lazy_sum at 0x1037bfaa0> >>> f() 10
    查看全部
  • 注意区分返回函数和返回值: def myabs(): (4个空格) return abs # 返回函数 def myabs2(x): (4个空格) return abs(x) # 返回函数调用的结果,返回值是一个数值
    查看全部
  • 返回函数:在函数 f 内部又定义了一个函数 g。由于函数 g 也是一个对象,函数名 g 就是指向函数 g 的变量,所以,最外层函数 f 可以返回变量 g,也就是函数 g 本身。 例如: def f(): (4个空格) print 'call f()...' (4个空格) # 定义函数g: (4个空格) def g(): (8个空格) print 'call g()...' (4个空格) # 返回函数g: (4个空格) return g 运行: >>> x = f() # 调用f() call f()... >>> x # 变量x是f()返回的函数: <function g at 0x1037bf320> >>> x() # x指向函数,因此可以调用 call g()... # 调用x()就是执行g()函数定义的代码
    查看全部
  • sorted()函数:sorted(list)对list进行排序,也可以接收一个比较函数来实现自定义排序,sorted(list, f),比如函数的定义是:传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较 例如:实现倒序排序 def reversed_cmp(x, y): (4个空格)if x > y: (8个空格) return -1 (4个空格) if x < y: (8个空格) return 1 (4个空格) return 0 sorted([36, 5, 12, 9, 21], reversed_cmp) 结果如下: [36, 21, 12, 9, 5]
    查看全部
  • 另一种解法:递归
    查看全部
    1 采集 收起 来源:python中 __len__

    2016-05-01

  • math.sqrt()平方根的返回结果是浮点数。可以通过int(math.sqrt(x))把x的平方根强制转为整数型
    查看全部

举报

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

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