闭包
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()是闭包函数

Python【day 11】闭包的更多相关文章

  1. Python中的闭包 - Closure

    Python中的闭包不是一个一说就能明白的概念,但是随着你往学习的深入,无论如何你都需要去了解这么一个东西. 闭包的概念 我们尝试从概念上去理解一下闭包. 在一些语言中,在函数中可以(嵌套)定义另一个 ...

  2. Python 入门之 闭包

    Python 入门之 闭包 1.闭包 (1)在嵌套函数内使用(非本层变量)和非全局变量就是闭包 (2)_ closure _ 判断是不是闭包 def func(): a = 1 def foo(): ...

  3. 说说Python中的闭包 - Closure

    转载自https://segmentfault.com/a/1190000007321972 Python中的闭包不是一个一说就能明白的概念,但是随着你往学习的深入,无论如何你都需要去了解这么一个东西 ...

  4. 说说Python中的闭包

    Python中的闭包不是一个一说就能明白的概念,但是随着你往学习的深入,无论如何你都需要去了解这么一个东西. 闭包的概念 我们尝试从概念上去理解一下闭包. 在一些语言中,在函数中可以(嵌套)定义另一个 ...

  5. 十一. Python基础(11)—补充: 作用域 & 装饰器

    十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...

  6. 21.python中的闭包和装饰器

    python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure). 以下说明主要针对 python ...

  7. c++11 闭包的实现

    c++11 闭包的实现 什么是闭包 闭包有很多种定义,一种说法是,闭包是带有上下文的函数.说白了,就是有状态的函数.更直接一些,不就是个类吗?换了个名字而已. 一个函数,带上了一个状态,就变成了闭包了 ...

  8. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

  9. python进阶11 正则表达式

    python进阶11 正则表达式 一.概念 #正则表达式主要解决什么问题? #1.判断一个字符串是否匹配给定的格式,判断用户提交的又想的格式是否正确 #2.从一个字符串中按指定格式提取信息,抓取页面中 ...

  10. 【转】python中的闭包

    转自:http://www.cnblogs.com/ma6174/archive/2013/04/15/3022548.html python中的闭包 什么是闭包? 简单说,闭包就是根据不同的配置信息 ...

随机推荐

  1. 程序卡在 while(SPI_I2S_GetFlagStatus(W5500_SPI, SPI_I2S_FLAG_TXE) == RESET) 处

    stm32 SPI1,发现程序卡在 while(SPI_I2S_GetFlagStatus(W5500_SPI, SPI_I2S_FLAG_TXE) == RESET); 解决方式: 1.检查RCC时 ...

  2. DevOps 工程师成长日记系列二:配置

    原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-2-config ...

  3. [b0033] python 归纳 (十八)_队列Queue在多线程中使用(二)

    # -*- coding: UTF-8 -*- """ 多线程同时读队列 使用 join(), task_done() 逻辑: 3个子线程并发 从有6个数据的队列中取数据 ...

  4. [b0022] python 归纳 (八)_多进程_基本使用

    # -*- coding: UTF-8 -*- """ 测试进程使用 multiprocessing.Process 使用: 1. 准备一个函数<fun>,子 ...

  5. Linux命令: cat

    -s  连续多个空行显示为一个空行. -n 给每一行前显示行号. -b 只给非空行前显示行号. -E  在每行后显示一个$ cat f - g  把文件f的内容.STDIN.文件g的内容连接起来 .

  6. requests---重定向

    通常我们抓包的过程中,都会看到302的状态码,那么这个过程发生了什么? 什么是重定向 就是通过各种方法将各种网络请求重新定个方向转到其它位置,本来应该从a出发到达b但是最终到达了c,这种场景就叫做重定 ...

  7. web-综合题2

    地址 http://cms.nuptzj.cn/ 0x01  很有意思的一题综合题,确实包含的内容比较多 打开页面 把能打开的都打开,能看的都看一下 几个重点的信息 一段hash e045e454c1 ...

  8. C++标准库删除字符串中指定字符,比如空格

    参见:https://zh.cppreference.com/w/cpp/algorithm/remove 使用 erase 和 remove 配合. #include <algorithm&g ...

  9. luoguP4097 [HEOI2013]Segment

    题意 李超树板子题. 对每个区间维护该区间中点\(mid\)的最优线段. 插入一个线段: 求出这个线段的斜率和截距,注意特判无斜率的情况,得到\(y=kx+b\). 之后开始在线段树上插入,假设当前节 ...

  10. layui中form表单渲染的问题

    layui 官网的这部分文档介绍:http://www.layui.com/doc/modules/form.html#render 注意:针对的是表单元素,input select  textare ...