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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 直接在原函数上修改 打印出函数调用
    查看全部
  • 装饰器的定义
    查看全部
  • class Fib(object): def __call__(self,x): a,b,n = 0,1,0 L = [] while n<x: L.append(a) a,b = b,a+b n+=1 return L f = Fib()
    查看全部
    0 采集 收起 来源:python中 __call__

    2018-03-22

  • 不能同时写__init__和__call__的原因是__init__方法没有接到参数 要这样写: class Fib(object): def __init__(self): pass def __call__(self,num): L=[0,1] for i in range(num-2) : L.append(L[-1]+L[-2]) return L f = Fib() print f(10)
    查看全部
    0 采集 收起 来源:python中 __call__

    2017-07-28

  • b return x * x 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。 只能有一个表达式,不写return,返回值就是该表达式的结果 2.匿名函数有时候可以简化代码: 如下面这个由大到小排序列表的例子 >>> sorted([1, 3, 9, 5, 0], lambda x,y: -cmp(x,y)) [9, 5, 3, 1, 0]
    查看全部
  • 内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure) 返回函数不要引用任何循环变量,或者后续会发生变化的变量。 任务
    查看全部
    0 采集 收起 来源:python中闭包

    2017-07-28

  • #高阶函数:能够接收函数作为参数的函数 #DEMO >>> def add(x, y, f): return f(x) + f(y) >>> add(-1, 3, abs) 4
    查看全部
  • 1.f(g()),x=f(),x()=g() 2.返回函数和返回值是不同的概念 def myabs(): return abs # 返回函数 def myabs2(x): return abs(x) # 返回函数调用的结果,返回值是一个数值 3.返回函数可延迟计算 对返回的函数进行调用时,才计算出结果 在后续代码中可以决定是否调用该函数
    查看全部
  • 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]) #代码执行到这里的时候,f指向了lazy_prod ,但是lazy_prod是一个无参数输入的函数,其参数输入来源于calc_prod函数中提供的参数。所以在后面print f()相当于是执行了lazy_prod()函数,由此前calc_prod函数传入的参数,计算得到了24这个结果。 print f()
    查看全部
  • @property---这是关键字,固定格式,能让方法当“属性”用。 @score.setter---前面的"score"是@property紧跟的下面定义的那个方法的名字,"setter"是关键字,这种“@+方法名字+点+setter”是个固定格式与@property搭配使用。
    查看全部
    0 采集 收起 来源:python中 @property

    2018-03-22

  • # -*- coding:utf-8 -*- import time # 这里主要需要理解,f是函数factorial,因为函数factorial使用装饰器的时候,会把函数和值传过来 def performance(f): def fn(*args, **kw): t1 = time.time() # 代码执行到这里的时间值 r = f(*args, **kw) # 调用factorial函数对1到10的积进行处理 t2 = time.time() # 同样是代码执行到这里的时间值 print 'call %s() in %fs' % (f.__name__, (t2 - t1)) # 计算执行1到10的积所需要的时间 return r # 返回factorial函数 return fn # 返回fn函数 @performance def factorial(n): return reduce(lambda x, y: x*y, range(1, n+1)) print factorial(10)
    查看全部
  • 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 注意:返回函数(闭包)不要引用任何循环变量,或者后续会发生变化的变量。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-07-28

  • def count(): fs = [] for i in range(1,4): def f(): return i*i fs.append(f()) return fs f1,f2,f3 = count() print f1,f2,f3 #f1,f2,f3是数值 def count(): fs = [] for i in range(1,4): def f(j): def g(): return j*j return g r = fs.append(r) return fs f1,f2,f3 = count() print f1(),f2(),f3()#不解
    查看全部
    0 采集 收起 来源:python中闭包

    2017-07-28

  • 使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。 考察一个@log的定义: def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn 对于阶乘函数,@log工作得很好: @log def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10) 结果: call factorial()... 3628800 由于log函数中只定义了一个参数的函数(def fn(x):) 对于参数不是一个的而是多个的函数,调用将报错: @log def add(x, y): return x + y print add(1, 2) 结果: (执行结果将报错,报错内容此处省略) 因为 add() 函数需要传入两个参数,但是 @log 写死了只含一个参数的返回函数。 要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用:——————(关于python的*args 和 **kw介绍,可以翻看1-1章笔记) def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn 现在,对于任意函数,@log 都能正常工作。
    查看全部
  • f1,f2,f3 这里是数值,并非是函数
    查看全部
    0 采集 收起 来源:python中闭包

    2017-07-28

举报

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

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