闭包函数
时间:2019-11-19
本文章向大家介绍闭包函数,主要包括闭包函数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、什么是闭包函数
闭:封闭
包:包裹
内层函数被外层函数包裹起来,内层函数可以引用外层函数的名字
闭包函数:
- 闭包函数必须在函数内部定义
- 闭包函数可以引用外层函数的名字
闭包函数的定义
闭包函数是 函数嵌套,函数对象,名称空间与作用域 结合体
def func(x):
x = 100
# inner是闭包函数
def inner():
print(x)
print(inner, 11)
return inner
func(1)
# res = func(1)
# print(res)
# print(func(1))
inner = func(1)
#inner()
<function func.<locals>.inner at 0x000001B67E1C2F78> 11
<function func.<locals>.inner at 0x000001B67E1C2F78> 11
Process finished with exit code 0
直接传参:
def func(x):
return x
func(1000)
通过闭包函数传参
def outer(number):
def inner():
print(number)
return inner
func = outer(1000)
func()
二、闭包函数的应用
闭包函数的应用是为了装饰器作准备
需求:爬取某个网站,打印获取数据的长度
方式一:直接传参
import requests
# 方式一:直接传参
def spider_func(url):
# 往url地址发送请求,获取响应数据
response = requests.get(url) # 必须接受url
# 状态码: 200
if response.status_code == 200:
# 获取当前url地址中所有的文本
print(len(response.text))
print(response.text)
url = 'https://www.cnblogs.com/xiaoyuanqujing/'
spider_func(url)
方式二: 通过闭包函数接受url地址,执行爬取函数
def spider_outer(url):
def spider_inner():
response = requests.get(url)
if response.status_code == 200:
print(len(response.text))
return spider_inner
spider_blog = spider_outer('https://www.cnblogs.com/xiaoyuanqujing/')
spider_blog()
原文地址:https://www.cnblogs.com/cnhyk/p/11890751.html
- H5 直播避坑指南
- H5 和移动端 WebView 缓存机制解析与实战
- 根据IE版本加载不同CSS样式的方法小结,解决低版本IE兼容问题
- Linux下用dd命令测试硬盘的读写速度
- 教你 Debug 的正确姿势——记一次 CoreMotion 的 Crash
- Linux系统yum命令安装软件时保留(下载)rpm包
- Go语言读写数据库
- 《Android 创建线程源码与OOM分析》
- 微信 Android 视频编码爬过的那些坑
- 少年,这有套《街霸2》AI速成心法,想传授于你……
- 你知道android的MessageQueue.IdleHandler吗?
- 《Android基础:Fragment,看这篇就够了》
- Android 7.0中ContentProvider实现原理
- 《iOS APP 性能检测》
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 智能合约中常见的漏洞总结复现#技术创作101训练营#
- JS根据列表排列对象数组
- git提取两次提交或者版本的差异文件并打包成zip压缩包
- 博客通用版Live2d伊斯特瓦尔发布
- 一个小需求,自动重启k8s集群中日志不刷新的POD
- 多图,一文了解 8 种常见的数据结构
- Jenkins--pipline 流水线部署Java后端项目
- 微信小程序修炼之路LV1—工具介绍篇
- CentOS 7 部署OpenLDAP+FreeRadius
- 手把手教你使用yolo进行对象检测
- K8s之Helm工具详解
- 技术创作101训练营——上古神器Gvim--从入门到精通
- 关于linux7下编写crontab任务执行mysqldump备份无效
- 黑暗中的YOLO:解决黑夜里的目标检测 | ECCV 2020
- Elasticsearch:Java 运用示例