标签分类
技术文章
当前位置:主页 > 计算机编程 > python > python支持返回函数的实例解析

python支持返回函数的知识点总结

  • 发布时间:
  • 作者:码农之家原创
  • 点击:146

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

这篇文章主要知识点是关于python,返回函数,python支持返回函数的实例解析,的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

可爱的Python
可爱的Python全书完整版
  • 类型:Python大小:7 MB格式:PDF出版:电子工业出版社作者:哲思社区
立即下载
跟老齐学Python:轻松入门
  • 类型:Python大小:46.6 MB格式:PDF出版:电子工业出版社作者:齐伟
立即下载

更多相关的学习资源可以参阅 程序设计电子书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()

 

以上就是python支持返回函数的实例解析的详细内容,更多请关注码农之家其它相关文章!

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到儿童python编程入门书籍推、 解决axios.interceptors.respon、 vue项目中使用md5加密以及、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:python调试中print()和断言实例讲解

下一篇:python用户管理系统实例详解

展开 +

收起 -

学习笔记
网友NO.775137

Python闭包之返回函数的函数用法示例

闭包(closure)不是什么可怕的东西。如果用对了地方,它们其实可以很强大。闭包就是由其他函数动态生成并返回的函数,通俗地讲,在一个函数的内部,还有一个“内层”的函数,这个“内层”的函数是被返回的,它可以访问其创建者的局部命名空间中的变量。 下面是一个非常简单的例子: # 定义一个函数def make_closure(a): # 在函数内部再定义一个函数,其实这个里面的函数就被认为是闭包 def closure(): # 这里打印一下传递进来的数字是什么 print('I know the secret : %d' % a) return closure# 给make_closure函数赋值,这个7就是给参数aclosure1 = make_closure(7)# 这个其实就是调用返回的closure函数,然后执行closure函数closure1() 运行结果: 我的理解:其实闭包就是一个函数A里还有另一个函数B,因为返回值是函数B,所以在调用函数A的时候,如果想让函数B也执行,必须还要再调用一次函数B。 对于一个函数内嵌了N个函数,那么就需要初始化N次。 你可能会想,这到底有什么用。在实际工作中,你可以编写带有大量选项的非常一般化的函数,然后再组装出更简单更专门化的函数。 下面这个例子中创建了一个字符串格式化函数: def format_and_pad(template, space): def formatter(x): return (template % x).rjust(space) return formatter# 创建一个始终返回15位字符串的浮点数格式……

网友NO.530142

什么是python返回函数?(实例解析)

在以下的文章之中我们来了解一下什么是python中的返回函数。了解一下关于python返回函数的相关知识,好了,废话不多说我们进入下面的文章吧。 python函数作为返回值: 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数: def lazy_sum(*args): def sum(): ax = 0 for n in args: ax = ax + n return ax return sum 当我们调用lazy_sum()时,返回的并不是求和结果,而是求和函数: f = lazy_sum(1, 3, 5, 7, 9) ffunction lazy_sum.locals.sum at 0x101c6ed90 调用函数f时,才真正计算求和的结果: f()25 在这个例子中,我们在函数lazy_sum中又定义了函数sum,并且,内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力。 请再注意一点,当我们调用lazy_sum()时,每次调用都会返回一个新的函数,即使传入相同的参数: f1 = lazy_sum(1, 3, 5, 7, 9) f2 = lazy_sum(1, 3, 5, 7, 9) f1==f2False f1()和f2()的调用结果互不……

网友NO.675244

关于Python返回函数与返回值的秘密

最近接触python,看到了 python中返回函数 的概念,以前只接触过 函数返回值 ,比如python就可以返回int,str,list,dict等等类型数据,这里要说的是python还支持 返回函数 。 首先看看python支持 返回函数 的基本语法 def f(): print 'call f()...' # 定义函数g: def g(): print 'call g()...' # 返回函数g: return g 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数: def lazy_sum(*args): def sum(): ax = 0 for n in args: ax = ax + n return ax return sum 当我们调用lazy_sum()时,返回的并不是求和结果,而是求和函数: f = lazy_sum(1, 3, 5, 7, 9) ffunction lazy_sum.locals.sum at 0x101c6ed90 调用函数f时,才真正计算求和的结果: f()25 在这个例子中,我们在函数lazy_sum中又定义了函数sum,并且,内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力。 请再注意一点,当我们调用lazy_sum()时,每次调用都会返回一个新的函数,即使传入相同的参数: f1 = lazy_sum(1, 3, 5, 7, 9) f2 = lazy_sum(1, 3,……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明