python-高阶函数和闭包
高阶函数:把函数作为参数传入,这样的函数成为高阶函数。
高阶函数,higher-order function
Abs()内置函数:绝对值
函数名是什么:指向函数的变量
传入函数
一个函数的参数是否可以接受另外一个函数作为参数,这种函数就叫做高阶函数。
最简单高阶函数实例:
def func(x,y,z):
return z(x)+z(y)#abs(x)+abs(y)
print(func(-4,6,abs))
返回函数
高阶函数除了可以接受函数作为参数外,还可以吧函数作为值返回
Def sum(args):
Ax = 0
For var in args:
Ax+=var
Return ax
_______________________________________________________________
def func(*args):
def sum():
ax = 0
for n in args:
ax+=n
return ax
return sum
a = func(1,2,3,4,5)
print(a())
内部函数可以引用外部函数的参数和局部变量,当外部函数返回内部函数时,相关参数和变量都保存在返回的函数当中,这就是闭包
def func(*args):
def sum():
ax = 0
for n in args:
ax+=n
return ax
return sum
a = func(1,2,3,4,5)
a1 = func(1,2,3,4,5)
print(a()==a1())
注意:当调用func函数时,每次调用都会返回一个新的函数,即使传入的参数相同
闭包:
def count():
fs=[]
for i in range(1,4):
def f():
return i*i
fs.append(f)
return fs
f1,f2,f3 = count()
print(f1())
print(f2())
print(f3())
牢记:返回函数不要引用任何循环变量,或者后面会发生改变的变量
def count():
def f(j):
def g():
return j*j
return g
fs=[]
for i in range(1,4):
fs.append(f(i))#立刻被执行,所以i的当前值被传入f()
return fs
f1,f2,f3 = count()
print(f1())
print(f2())
print(f3())
python-高阶函数和闭包的更多相关文章
- Python高阶函数及函数柯里化
1 Python高阶函数 接收函数为参数,或者把函数作为结果返回的函数为高阶函数. 1.1 自定义sort函数 要求:仿照内建函数sorted,自行实现一个sort函数.内建函数sorted函数是返回 ...
- 用一个简单的例子来理解python高阶函数
============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...
- Python高阶函数_map/reduce/filter函数
本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...
- python——高阶函数:高阶函数
python高阶函数 00初识高阶函数 一等公民 函数在python中是一等公民(First-Class Object),同样和变量一样,函数也是对象,只不过是可调用的对象,所以函数也可以作为一个普通 ...
- python高阶函数的使用
目录 python高阶函数的使用 1.map 2.reduce 3.filter 4.sorted 5.小结 python高阶函数的使用 1.map Python内建了map()函数,map()函数接 ...
- python 高阶函数之filter
前文说到python高阶函数之map,相信大家对python中的高阶函数有所了解,此次继续分享python中的另一个高阶函数filter. 先看一下filter() 函数签名 >>> ...
- Python高阶函数-闭包
高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 在这里我们首先回忆一下python代码运行的时候遇到函数是怎么做的. 从python解释器开始执行之后,就在内存中开辟了一个空间 每当 ...
- day20 Python 高阶函数,函数,嵌套,闭包 装饰器
高阶函数定义 1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名 3.满足上述条件任意一个都可以称之为高阶函数 一.函数的接收参数是一个函数名 import time def foo(): ...
- Python高阶函数之 - 装饰器
高阶函数: 1. 函数名可以作为参数传入 2. 函数名可以作为返回值. python装饰器是用于拓展原来函数功能的一种函数 , 这个函数的特殊之处在于它的返回值也是一个函数 , 使用pyth ...
- Python高阶函数--map
map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把list 的每个元素依次作用在函数 f 上,得到一个新的 list 并返回. 例如,对于lis ...
随机推荐
- Servlet------>servletDemo 及细节注意
原理图: 前提:我用的命令行都是mac系统下用的,非win jsp实质是一个servlet,所以要先了解servlet,如上页面是一个servletdemo,下面是尝试的步骤 1.先写好Demo.ja ...
- 如何在 cmd 中打开设备管理器,如何找到打开其他设备的命令?
Win + R 组合键后,输入 devmgmt.msc 即可. 任意打开一个软件,然后查看其命令行,找到该程序的实际进程名即可. 注意:需要打开的程序需要放在设置过环境变量的目录,确保执行 cmd 时 ...
- CDH部署日志
CDH部署时出现如图所示的错误 可去服务器查看:/opt/cm-5.5.0/run/cloudera-scm-agent/process/ccdeploy_hbase-conf_etchbasecon ...
- Python用MySQLdb, pymssql 模块通过sshtunnel连接远程数据库
转载自 https://www.cnblogs.com/luyingfeng/p/6386093.html 安全起见,数据库的访问多半是要做限制的,所以就有一个直接的问题是,往往多数时候,在别的机器上 ...
- 前端 javascript 数据类型
JavaScript 中的数据类型分为原始类型和对象类型: 原始类型 数字 字符串 布尔值 对象类型 数组 “字典” ...
- 初识Java集合框架(Iterator、Collection、Map)
1. Java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中 注意: 既有接口也有类,图中画实线的是类,画虚线的是接口 使用之前须要到导入java.util包 List ...
- 谷歌浏览器Chrome错误提示Flash过期怎么办(转)
在使用谷歌浏览器Chrome时,会碰到谷歌浏览器Chrome的错误提示:“Adobe Flash Player因过期而遭到阻止”,点击“更新插件”是不行的,国内的网络根本就打不开,点击“运行一次”是可 ...
- jQuery对象和DOM对象之间的转换
jQuery对象不能使用DOM对象的任何方法,DOM对象也不能使用jQuery对象的任何方法.在需要使用时需要对其进行转换. jQuery对象前使用"$",这不是必须的,不这么使用 ...
- 在MFC中实现对象之间数据的传递。
方法一: 第一步:在VS2010里面新建一个单文档MFC程序. 第二步:在App类里面的头文件里面 定义性声明一个变量 ,见下面程序 public: CString ii; 第三步:在App类的实现文 ...
- xlrd xlwt操作
简介 xlrd,xlwt和xlutils是用Python处理Excel文档(*.xls)的高效率工具.其中,xlrd只能读取xls,xlwt只能新建xls(不可以修改),xlutils能将xlrd.B ...