视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
python支持返回函数的实例解析
2020-11-27 14:22:26 责编:小OO
文档


这篇文章主要介绍了python支持返回函数的实例解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

最近接触python,看到了python中返回函数的概念,以前只接触过函数返回值,比如python就可以返回int,str,list,dict等等类型数据,这里要说的是python还支持返回函数。

首先看看python支持返回函数的基本语法

def f():
 print 'call f()...'
 # 定义函数g:
 def g():
 print 'call g()...'
 # 返回函数g:
 return g

这里,最外层的函数f会返回一个函数g,也就是函数g本身;
下面看看函数调用的过程;(接上面)

>>> x = f() # 调用f()call f()...>>> x # 变量x就是上面一个最外层函数返回的函数(不是函数值)<function g at 0x1037bf320>
>>> x() # x指向函数,因此可以调用,这里就是调用内层函数x()的过程call g()... # 调用x()就是执行g()函数定义的代码
  • 只返回函数的作用:
    返回函数可以把一些计算延迟执行。例如,如果定义一个普通的求和函数:

  • def calc_sum(lst):
     return sum(lst)
    >>>calc_sum([1,2,3,4])

    结果直接是:10

    但是,可以通过返回函数思想写代码,就可以“延时计算”

    def calc_sum(lst):
     def lazy_sum():
     return sum(lst) return lazy_sum

    下面是调用:
    注意,下面代码并没有对函数进行执行计算出结果,而是返回函数。

    >>> f = calc_sum([1, 2, 3, 4])
    >>> f
    <function lazy_sum at 0x1037bfaa0>

    对返回的函数进行调用时,才计算出结果

    >>>f()10

    下面是一个例子:
    请编写一个函数calc_prod(lst),它接收一个list,返回一个函数,返回函数可以计算参数的乘积。
    思想:先定义能计算乘积的函数,再将此函数返回。

    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()

    相关推荐:

    下载本文
    显示全文
    专题