Day21-命名空间与闭包
来源:互联网 发布:java研发工程师招聘 编辑:程序博客网 时间:2024/06/07 04:58
1 名称空间与作用域
在Python中所有名字的定义都放到namespace中
名称空间分类:
内置名称空间
import this
dir(buil-in) 查看全部内置
全局名称空间
局部名称空间
在函数体内等
查询全局和局部
globals()方法可以获得全局的内容
该方法获得的全局内容是调用的时候程序之前已经定义过的全局内容
locals()方法可以获得局部的内容
2 函数嵌套和静态嵌套域
函数嵌套调用
函数里面调用别的函数
函数的嵌套定义
在函数里面定义别的函数
3 函数对象与闭包
函数对象
函数名称可以被赋值给变量
函数的执行时函数名称加()
新赋值的变量也可以加括号执行
闭包
闭包用于包裹函数内部的作用域, 不包裹外部的作用域
闭包的基本形式是:
在函数F1中, 定义F2, F2只能引用F1定义的变量, 之后F1函数返回F2的函数名字
这样就保证了可以将F1的执行结果赋予给一个变量, 该变量可以在之后的任何时刻随时可以运行
x = 100def f1(): x=1 y=2 def f2(): print(x,y) return f2f=f1()f()print(f.__closure__)print(f.__closure__[0].cell_contents)print(f.__closure__[1].cell_contents)
利用闭包完成爬取Python官网页面
from urllib.request import urlopendef f1(url): def f2(): print(urlopen(url).read()) return f2python=f1('http://www.python.org')python()python()
0 0
- Day21-命名空间与闭包
- 包与命名空间
- jQuery 命名空间、闭包
- Java包与C#命名空间
- pyroute2包与网络命名空间
- 命名空间+闭包+全局变量实例
- 关于命名空间和闭包
- Java包*命名空间
- 包和命名空间
- C#命名空间与java包的区别
- C#命名空间与Java包的区别
- java中的“包”与C#中的“命名空间
- C#命名空间与java包的区别
- Oracle数据库备份与恢复数据_包(命名空间)
- java命名空间与命名
- 什么是包和命名空间
- struts包和命名空间
- 函数与命名空间
- 第七章-面向对象高级编程
- Day12~Day18-Python基础
- Day19-文件的操作
- Day20-函数初步
- Mooc爬虫01-request库
- Day21-命名空间与闭包
- Mooc多媒体技术与应用01-多媒体基础
- Mooc多媒体技术与应用02-数字音频技术
- Book皮埃斯01-基本操作
- MyBatis 分页的实现
- Mooc多媒体技术与应用03-数字图像技术
- git学习笔记(上)
- Day22-装饰器
- Spring Boot 快速入门