Python函数对象与闭包怎么使用
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容介绍了"Python函数对象与闭包怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
网络技术自我鉴定书
我的世界怎样恢复服务器
全球服务器手机版
进博会期间网络安全应急预案
jsp实现删除数据库表中数据
信息化与网络安全图片
rtx服务器端口
郊区租房软件开发
单位内网违反网络安全法
快速创建数据库表
黄浦区品质软件开发销售方法
巨杉数据库 招聘
学java要会数据库
长春质量网络技术服务有哪些
mac下的数据库连接工具
电流工控软件开发
平时我们说的网安是网络安全吗
光遇服务器连接失败进不去怎么办
金航线连接不上服务器
泸州思鸣网络技术有限公司
苏州企业软件开发价格
广州综合服务管理软件开发
python打印数据库
服务器开机报警
杭州有余网络技术
网络数据库类型
笔记软件数据库的重要性
市网络安全学院
软件开发招工找不到人
住建局软件开发公司