加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python【day 11】闭包

发布时间:2020-12-20 10:24:11 所属栏目:Python 来源:网络整理
导读:闭包 1、闭包的概念: 嵌套函数中,父级函数的变量,在子集函数中用到了(访问、修改、返回),那么这个变量就被保护起来了 只有自己可以修改,父级函数()()就是闭包函数 2、闭包的特点: 1、常驻内存 2、保护变量(只能自己修改,别人无法修改) 3、闭包解
闭包
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()是闭包函数

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读