Python函数对象与闭包介绍

Python函数对象与闭包介绍

目录

一 函数对象

1.1 函数可以被引用

1.2 函数可以作为容器类型的元素

1.3 函数可以作为参数传入另外一个函数

1.4 函数的返回值可以是一个函数

二 闭包函数

2.1 闭与包

2.2 闭包的用途

一 函数对象

函数对象指的是函数可以被当做’数据’来处理,具体可以分为四个方面的使用

1.1 函数可以被引用 >>> def add(x,y): ... return x+y ... >>> func=add >>> func(1,2) 3 1.2 函数可以作为容器类型的元素 >>> dic={'add':add,'max':max} >>> dic {'add': <function add at 0x100661e18>, 'max': <built-in function max>} >>> dic['add'](1,2) 3 1.3 函数可以作为参数传入另外一个函数 >>> def foo(x,y,func): ... return func(x,y) ... >>> foo(1,2,add) 3 1.4 函数的返回值可以是一个函数 >>> def bar(): ... return add ... >>> func=bar() >>> func(1,2) 3 二 闭包函数 2.1 闭与包

基于函数对象的概念,可以将函数返回到任意位置去调用,但作用域的关系是在定义完函数时就已经被确定了的,与函数的调用位置无关。

x=1 def f1(): def f2(): print(x) return f2 def f3(): x=3 f2=f1() #调用f1()返回函数f2 f2() #需要按照函数定义时的作用关系去执行,与调用位置无关 f3() #结果为1

也就是说函数被当做数据处理时,始终以自带的作用域为准。若内嵌函数包含对外部函数作用域(而非全局作用域)中变量的引用,那么该’内嵌函数’就是闭包函数,简称闭包(Closures)

x=1 def outer(): x=2 def inner(): print(x) return inner func=outer() func() # 结果为2

可以通过函数的__closure__属性,查看到闭包函数所包裹的外部变量

>>> func.__closure__ (<cell at 0x10212af78: int object at 0x10028cca0>,) >>> func.__closure__[0].cell_contents 2

“闭”代表函数是内部的,“包”代表函数外’包裹’着对外层作用域的引用。因而无论在何处调用闭包函数,使用的仍然是包裹在其外层的变量。

2.2 闭包的用途

目前为止,我们得到了两种为函数体传值的方式,一种是直接将值以参数的形式传入,另外一种就是将值包给函数

import requests #方式一: def get(url): return requests.get(url).text #方式二: def page(url): def get(): return requests.get(url).text return get

提示:requests模块是用来模拟浏览器向网站发送请求并将页面内容下载到本地,需要事先安装:pip3 install requests

对比两种方式,方式一在下载同一页面时需要重复传入url,而方式二只需要传一次值,就会得到一个包含指定url的闭包函数,以后调用该闭包函数无需再传url

# 方式一下载同一页面 get('https://www.python.org') get('https://www.python.org') get('https://www.python.org') …… # 方式二下载同一页面 python=page('https://www.python.org') python() python() python() ……

闭包函数的这种特性有时又称为惰性计算。使用将值包给函数的方式,在接下来的装饰器中也将大有用处

到此这篇关于Python函数对象与闭包介绍的文章就介绍到这了,更多相关Python函数对象与闭包内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    excel怎么用乘法函数

    excel怎么用乘法函数,乘法,函数,哪个,excel乘法函数怎么用?1、首先用鼠标选中要计算的单元格。2、然后选中单元格后点击左上方工具栏的fx公

    excel中乘法函数是什么?

    excel中乘法函数是什么?,乘法,函数,什么,打开表格,在C1单元格中输入“=A1*B1”乘法公式。以此类推到多个单元。1、A1*B1=C1的Excel乘法公式

    标准差excel用什么函数?

    标准差excel用什么函数?,函数,标准,什么,在数据单元格的下方输入l标准差公式函数公式“=STDEVPA(C2:C6)”。按下回车,求出标准公差值。详细

    16天的最新的内存引用:4gb上涨10元

    16天的最新的内存引用:4gb上涨10元,,内存价格上涨到4GB 10元 在今天中关村的现货市场,内存价格总体呈发展趋势,但它是小的。内存市场昨日下

    excel常用函数都有哪些?

    excel常用函数都有哪些?,函数,哪些,常用,1、SUM函数:SUM函数的作用是求和。函数公式为=sum()例如:统计一个单元格区域:=sum(A1:A10)  统计多个

    wps如何生成引用

    wps如何生成引用,WPS教程,1.wps怎么添加引用文献wps添加引用文献:1、打开文档,点击WPS文字右侧下拉菜单。2、打开插入>引用>脚注与尾注3、选