您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页python支持返回函数的实例解析

python支持返回函数的实例解析

来源:爱够旅游网

这篇文章主要介绍了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()

    相关推荐:


    Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

    违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

    本站由北京市万商天勤律师事务所王兴未律师提供法律服务