Python学习笔记-返回函数
来源:互联网 发布:知即墨下载安装 编辑:程序博客网 时间:2024/05/18 03:19
1:python返回函数
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是f()返回的函数:x() # x指向函数,因此可以调用。#打印结果call g()... # 调用x()就是执行g()函数定义的代码
2:请注意区分返回函数和返回值:
def myabs(): return abs # 返回函数def myabs2(x): return abs(x) # 返回函数调用的结果,返回值是一个数值
3:返回函数可以把一些计算延迟执行。
这点其实是回调函数。例如,如果定义一个普通的求和函数:
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()#调用返回函数进行求和计算
4:使用例子
请编写一个函数calc_prod(lst),它接收一个list,返回一个函数,返回函数可以计算参数的乘积。
# -*- coding: utf-8 -*-__author__ = 'liujiepeng'def calc_prod(lst): def lazy_prod(): def f(x, y): return x * y return reduce(f, lst, 1) return lazy_prodf = calc_prod([1, 2, 3, 4])print f()
补充reduce:
python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。所以,上述的连乘操作,需要定义如上:
def f(x, y): return x * y return reduce(f, lst, 1)
0 0
- Python学习笔记-返回函数
- Python学习笔记-返回函数
- python学习笔记 返回函数
- 【python学习笔记】函数式编程:返回函数
- python学习笔记,返回函数,匿名函数,装饰器
- Think Python 学习笔记6:有返回函数 迭代
- python 学习笔记 ---返回值为函数 闭包
- 【Python】学习笔记——-5.2、返回函数
- Python学习笔记(12) -- (关键词:返回函数/闭包)
- python学习笔记(六)函数返回值
- python学习笔记10(函数一): 函数使用、调用、返回值
- Python进阶学习笔记——函数式编程之返回函数&闭包
- python 学习笔记 -- 函数
- Python学习笔记--函数
- Python学习笔记 函数
- Python学习笔记:函数
- python函数学习笔记
- Python学习笔记--函数
- HTML5 Canvas画布,画出直角三角形
- genymotion+VirtualBox创建android模拟器
- java实现map和object互转的三种方法
- 一个很好的网站 www.atwop.com
- 表运算
- Python学习笔记-返回函数
- ACM常用算法
- 链表的回文结构
- hadoop:data node 距离远近的计算
- GDB单步调试基础
- [bzoj3142][HNOI2013]数列
- iOS的socket开发基础
- Linux系统调用分析
- 常用正则