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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • Python中的filter()高阶函数函数 filter()函数同样接收一个函数f 和一个list; f函数的作用是对每个元素进行判断 返回true和false;根据判断结果自动过滤掉不符合条件的元素,返回符合条件的元素组成新的list 例如:编一个返回平方根为整数的数 1到100之间 import math def is_sqr(x): r = int(math.sqrt(x)) return r*r==x print filter(is_sqr, range(1, 101)) 注意:运用求平方根的函数sqrt()需要导入方法库 import math
    查看全部
  • reduce()函数接收的参数和map()类式 一个函数f,一个 list 不同在于:reduce()接收的函数参数必须是接收两个参数 ,reduce()对list的每一元素反复电泳函数f 并返回最终的结果值 例如:一个函数f 接收x和y 返回x和y 的和 def f(x,y): ruturn x+y reduce(f,[1,2,3,4]) 调用该函数,执行过程: 先计算头两元素的和 f(1,2) 结果为3;第二步f(3,3)结果为6;第三步f(6,4)结果为10 reduce()还可以接收第三个可选参数,作为计算的初始值 reduce(f,[1,2,3],100) 执行过程:f(100,1) 返回101 ;f(101,2) 返回103 ;f(103,3)返回106
    查看全部
  • 把任意变量变成str
    查看全部
  • Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。 使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。 考察一个@log的定义: def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn 因为 add() 函数需要传入两个参数,但是 @log 写死了只含一个参数的返回函数。 要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用: def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn 现在,对于任意函数,@log 都能正常工作。
    查看全部
  • 变量可以指向函数 函数名其实就是指向函数的变量 高阶函数:能接收函数作为参数的函数 -变量可以指向函数 -函数的参数可以接收变量 -一个函数可以接收另一个函数作为参数 -能接收函数作为参数的函数就是高阶函数
    查看全部
  • 装饰器的作用
    查看全部
  • 装饰器
    查看全部
  • 通过高阶函数返回新函数
    查看全部
  • math.sqrt
    查看全部
  • 把计算视非函数,非指令 纯函数式编程:不需要变量,没有副作用,测试简单 支持高阶函数,代码简洁 Python支持的函数式编程: 不是纯函数式编程:允许有变量 支持高阶函数:函数也可以作为变量传入 支持闭包:有了闭包就能返回函数 Python有限度的支持匿名函数
    查看全部
  • 在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算 f(x)=x2 时,除了定义一个f(x)的函数外,还可以直接传入匿名函数: >>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81] 通过对比可以看出,匿名函数 lambda x: x * x 实际上就是: def f(x): return x * x 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。 使用匿名函数,可以不必定义函数名,直接创建一个函数对象,很多时候可以简化代码
    查看全部
  • Python 的decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数
    查看全部
  • def count(): fs = [] for i in range(1, 4): def f(m = i): return m * m fs.append(f) return fs f1, f2, f3 = count() print f1(), f2(), f3() 方法:问题的产生是因为函数只在执行时才去获取外层参数i,若函数定义时可以获取到i,问题便可解决。而默认参数正好可以完成定义时获取i值且运行函数时无需参数输入的功能,所以在函数f()定义中改为f(m = i),函数f返回值改为m*m即可.
    查看全部
    0 采集 收起 来源:python中闭包

    2018-03-18

  • 内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。举例如下: # 希望一次返回3个函数,分别计算1x1,2x2,3x3: def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count() 你可能认为调用f1(),f2()和f3()结果应该是1,4,9,但实际结果全部都是 9(请自己动手验证)。 原因就是当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3。由于f1、f2、f3并没有被调用,所以,此时他们并未计算 i*i,当 f1 被调用时: >>> f1() 9 # 因为f1现在才计算i*i,但现在i的值已经变为3 因此,返回函数不要引用任何循环变量,或者后续会发生变化的变量。
    查看全部
    0 采集 收起 来源:python中闭包

    2018-03-22

  • Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数! 例如,定义一个函数 f(),我们让它返回一个函数 g,可以这样写: def f(): print
    查看全部

举报

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

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