返回函数
Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数!例如,定义一个函数 f(),我们让它返回一个函数 g,可以这样写:def f():print 'call f()...'# 定义函数g:def g():print 'call g()...'# 返回函数g:return g
仔细观察上面的函数定义,我们在函数 f 内部又定义了一个函数 g。由于函数 g 也是一个对象,函数名 g 就是指向函数 g 的变量,所以,最外层函数 f 可以返回变量 g,也就是函数 g 本身。调用函数 f,我们会得到 f 返回的一个函数:>>> x = f()   # 调用f()
call f()...
>>> x   # 变量x是f()返回的函数:
<function g at 0x1037bf320>
>>> x()   # x指向函数,因此可以调用
call g()...   # 调用x()就是执行g()函数定义的代码
请注意区分返回函数和返回值:def myabs():return abs   # 返回函数
def myabs2(x):return abs(x)   # 返回函数调用的结果,返回值是一个数值
返回函数可以把一些计算延迟执行。例如,如果定义一个普通的求和函数:def calc_sum(lst):return sum(lst)
调用calc_sum()函数时,将立刻计算并得到结果:>>> calc_sum([1, 2, 3, 4])
10
但是,如果返回一个函数,就可以“延迟计算”:def calc_sum(lst):def lazy_sum():return sum(lst)return lazy_sum
# 调用calc_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 mul():m=1;for i in lst:m*=ireturn mreturn mul;f = calc_prod([1, 2, 3, 4])
print f()

python 返回函数相关推荐

  1. 一篇文章带你搞定Python返回函数

    一.什么是返回函数? 返回函数,简单的说就是返回值是一个函数. 返回的是函数,调用返回的函数的时候才会返回结果. 二.闭包 (以返回函数的形式实现) 相关参数和变量都保存在返回的函数中,这种称为&qu ...

  2. python 返回函数对象_Python—函数对象与闭包

    一 函数对象 函数对象指的是函数可以被当做"数据"来处理,具体可以分为四个方面的使用. 1.1 函数可以被引用 def index(): print('from index') a ...

  3. python 返回函数对象_返回函数

    函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = ...

  4. python 返回函数 闭包_python中闭包Closure函数作为返回值的方法示例

    前言 首先看看闭包的概念:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外 ...

  5. Python——返回函数

    一. 返回函数 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. >>> def lazy_sum(*args): ... def sum(): ... z = 0 ...

  6. python 返回函数 变量_你如何设置一个变量等于由python函数返回的值

    我试图设计一个系统,允许我在点击时将精灵移动到光标位置,类似于RuneScape,玩家将移动到鼠标在屏幕上单击的位置.以下是我的代码如下: for event in pygame.event.get ...

  7. python filter()函数(与map()、reduce()函数用法类似,根据给定函数判断列表元素是True还是False,返回剔除元素后的元素列表)

    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 ...

  8. Python学习笔记:返回函数

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  9. if python 判断函数返回值_Python函数的返回值和作用域

    函数的返回值和作用域 1.返回值 def guess(x): if x > 3: return "> 3" else: return "<= 3&quo ...

最新文章

  1. 2019 ICPC Asia Nanjing Regional C.Digital Path(拓扑排序递推DP)
  2. 漫画:什么是公有云、私有云和混合云?
  3. struts2.0和struts1.x的区别
  4. 四层负载均衡——LVS
  5. salad--8||9
  6. EF ++属性会更新实体
  7. 手机写python爬虫_零基础开始写Python爬虫心得
  8. vue-cil解决开发环境的跨域问题
  9. mac系统怎么获取最高权限删除顽固文件?
  10. 端午节,我们好好聊聊程序员这个群体
  11. 简单数据策略帮助LinkedIn提高企业服务收入
  12. 《机器学习》周志华--第5章神经网络。 笔记+习题
  13. matlab官方中文文档教程
  14. 浅析乡镇房地产产业现状及其对乡镇经济发展的推动力
  15. Youtube优质游戏开发UP主推荐:JayAnAm
  16. Canvas 图片加载
  17. ZYNQ7000 学习(三十) 定时器终端的原理和实现
  18. java类型参数推断_Java泛型类型推断
  19. 使用JS判断用户操作系统是否安装某字体
  20. python绘制曲线y=2x+5_python绘制GPM CSH潜热垂直剖面

热门文章

  1. 2008社工新书《黑客社会工程学攻击》
  2. Tomcat学习--源码导入和运行
  3. 格林时间转yyyy-MM-dd hh:mm:ss
  4. windows7下修改hosts文件无效解决办法(转)
  5. Collections.unmodifiableCollection
  6. 我是直接学Swift还是Objective-C?
  7. linux学习(7)第七章、Linux 文件与目录管理
  8. wordpress插件列表
  9. LINQ语句之Select/Distinct和Count/Sum/Min/Max/Avg
  10. Ajax 1.0 中使用web控件调用后台方法的用法.