Python【day 11】闭包

闭包
1、闭包的概念:
嵌套函数中,父级函数的变量,在子集函数中用到了(访问、修改、返回),那么这个变量就被保护起来了
只有自己可以修改,父级函数()()就是闭包函数

2、闭包的特点:
1、常驻内存
2、保护变量(只能自己修改,别人无法修改

3、闭包解决的问题:
全局变量,别的同学也有可以修改,只需要在函数内存变量前加上global就可以修改全局变量
全局变量: 优点是:常驻内存 缺点是:大家都可以修改-不安全
局部变量: 优点是:只有自己可以访问和修改-安全 缺点:无法常驻内存,别的同学无法访问
如何让一个变量既可以常驻内存,又只能自己才能修改呢,引入闭包函数

4、闭包的写法:
def outer():
a = 10
def inner():
print(a)
return a
return inner
ret = outer() #返回的是inner函数的内存地址
ret() #就是闭包函数

5、闭包的应用
1、爬虫
爬取网页的时候,通过网络访问网页后,将网页爬取的内容存到变量中,下次直接分析变量
比每次都访问网络,要更高效

2、写法
from urllib.request import urlopen
def outer():
content = urlopen(‘https://www.baidu.com/‘).read()
def inner():
print(content)
return content
return inner
ret = outer() #这里返回的是inner函数的内存地址
print(ret()) #这里就是content(被保护起来的变量,常驻内存,只能自己修改)
#ret()是闭包函数

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...