Python函数对象与闭包怎么使用
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,本篇内容介绍了"Python函数对象与闭包怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一
千家信息网最后更新 2025年11月13日Python函数对象与闭包怎么使用
本篇内容介绍了"Python函数对象与闭包怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一 函数对象
函数对象指的是函数可以被当做’数据’来处理,具体可以分为四个方面的使用
1.1 函数可以被引用
>>> def add(x,y):... return x+y... >>> func=add>>> func(1,2)3
1.2 函数可以作为容器类型的元素
>>> dic={'add':add,'max':max}>>> dic{'add': , '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=1def f1(): def f2(): print(x) return f2def f3(): x=3 f2=f1() #调用f1()返回函数f2 f2() #需要按照函数定义时的作用关系去执行,与调用位置无关f3() #结果为1
也就是说函数被当做数据处理时,始终以自带的作用域为准。若内嵌函数包含对外部函数作用域(而非全局作用域)中变量的引用,那么该’内嵌函数’就是闭包函数,简称闭包(Closures)
x=1def outer(): x=2 def inner(): print(x) return innerfunc=outer()func() # 结果为2
可以通过函数的__closure__属性,查看到闭包函数所包裹的外部变量
>>> func.__closure__(| ,)>>> func.__closure__[0].cell_contents2 |
"闭"代表函数是内部的,"包"代表函数外’包裹’着对外层作用域的引用。因而无论在何处调用闭包函数,使用的仍然是包裹在其外层的变量。
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函数对象与闭包怎么使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
函数
闭包
方式
作用
对象
页面
位置
内容
包裹
变量
接下来
代表
参数
就是
数据
更多
知识
结果
网站
处理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
批处理启动某服务器的一个程序
培训班学习软件开发
网络安全专业研究生有哪些
阿里云app怎么关闭服务器
全国职工职业技能大赛网络安全
远程管理服务器如何打开
内蒙古小云网络技术有限公司
服务器故障处理
硬盘加密软件开发
轨道交通通信与网络技术
网络安全委员会职能
霍林郭勒手机软件开发
网络安全是热门专业吗
邮政数据分析软件开发应用
警校网络安全视力要求
网络安全数据分析封面
数据库设计时用设置权限吗
计算机网络技术自学课程
网络安全优质专业申报方案
浪潮三年软件开发
云服务器需求估算
网络安全与国家安全视频
我的世界东方大陆服务器在哪里买
校园安全正能量网络安全共担当
亚马逊服务器被限制怎么办
数据库查询出来少个0
网络安全防护作文
恐怖黎明有几个服务器
南京可视化智慧消防软件开发
登陆svn服务器