python - 闭包,迭代器
def func1():
print('你是谁,你来自哪里')
print(func1)
# <function func1 at 0x000001256F021E18>
2、函数名可以赋值给其他变量
def func1():
print('这是函数1')
# print(func1)
res = func1 # 把函数当成一个变量赋值给另一个变量
res() # 函数调用 func1()
# 这是函数1
3、函数名可以当作容器类的元素
def func1():
print('大风吹1') def func2():
print('大风吹2') def func3():
print('大风吹3') def func4():
print('大风吹4') lst = [func1,func2,func3,func4]
for i in lst:
i()
4、函数名可以当作函数的参数进行传递
def func1():
print('这两天降温了') def func2(fn):
print('我是函数2')
fn()
print('我是函数2') func2(func1)
def func1():
print('哈哈') def func2():
print('嘿嘿') def func3():
print('呵呵') # 代理装饰器雏形
def proxy( a ): # a 就是变量,形参
print('我是代理')
a()
print('代理完毕') proxy(func1)
proxy(func2)
proxy(func3)
5、函数名可以作为函数的返回值
def func1():
print('这是函数1')
def func2():
print('这是函数2')
return func2 fn = func1() # 执行函数1,函数1返回的是函数2,这时fn之想的就是函数2
fn() # 执行上面返回的函数(也就是函数2)
def wapper():
name = '昂昂' # 局部变量常驻于内存
def inner():
print(name) # 在内层函数中调用外层函数的局部变量
return inner # 返回内部函数名 res = wapper() # res 是一个内层函数
res() # res 就是inner,执行的时间不确定,必须保证里边的name存在
# 写一个简易爬虫 from urllib.request import urlopen
# 去掉数字签名
import ssl
ssl._create_default_https_contest = ssl._create_unverified_context def func():
#获取到网页中的内容,当网速很慢时,反复的去打开这个网站,会很慢
content = urlopen("https://www.dytt8.net/";).read() def inner():
return content.decode("gbk") # 网页内容
return inner print('开始网络请求')
ret = func() # 网络请求已经完毕
print("网络请求完毕")
print("第一次",ret()[30])
print("第二次",ret()[30])
def wapper():
name = 'xiaomeng'
def inner():
print('zhangying')
print(inner.__closure__)
inner() wapper()
是闭包
def wapper():
name = 'xiaomeng'
def inner():
print(name)
print(inner.__closure__) # (<cell at 0x000001B2D03086A8: str object at 0x000001B2D03A23F0>,)
inner() wapper()
s = '你是谁啊'
print(dir(s)) # 可以打印对象中的方法和函数
print(dir(str)) # 可以打印类中申明的方法和函数
lst = [1, 2, 3]
# 模拟for循环 for el in lst
it = lst.__iter__() # 拿迭代器
while 1: # 循环
try: # 尝试
it.__next__()
except StopIteration: # 出现错误,意味着数据拿完了
break # 结束循环
python - 闭包,迭代器的更多相关文章
- 小学生都能学会的python(闭包和迭代器)
小学生都能学会的python(闭包和迭代器) 1. 函数名第一类对象 函数名其实就是变量名 1). 可以像变量一样互相赋值. 2). 可以作为函数的参数,进行传递 3). 可以作为返回值返回 4). ...
- Python 闭包、迭代器、生成器、装饰器
Python 闭包.迭代器.生成器.装饰器 一.闭包 闭包:闭包就是内层函数对外层函数局部变量的引用. def func(): a = "哈哈" def func2(): prin ...
- python基础——迭代器
python基础——迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器 ...
- Python 闭包
什么是闭包? 闭包(closure)是词法闭包(lexical closure)的简称.闭包不是新奇的概念,而是早在高级程序语言开始发展的年代就已产生. 对闭包的理解大致分为两类,将闭包视为函数或者是 ...
- Python闭包与函数对象
1. Python闭包是什么 在python中有函数闭包的概念,这个概念是什么意思呢,查看Wikipedia的说明如下: “ In programming languages, closures (a ...
- Python闭包及装饰器
Python闭包 先看一个例子: def outer(x): def inner(y): return x+y return innder add = outer(8) print add(6) 我们 ...
- Python闭包详解
Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...
- Python闭包及其作用域
Python闭包及其作用域 关于Python作用域的知识在python作用域有相应的笔记,这个笔记是关于Python闭包及其作用域的详细的笔记 如果在一个内部函数里,对一个外部作用域(但不是全局作用域 ...
- python基础—迭代器、生成器
python基础-迭代器.生成器 1 迭代器定义 迭代的意思是重复做一些事很多次,就像在循环中做的那样. 只要该对象可以实现__iter__方法,就可以进行迭代. 迭代对象调用__iter__方法会返 ...
- Python 闭包小记
闭包就是能够读取其他函数内部变量的函数.例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“.在本质上,闭包是将函数内部和函数外部连接起来 ...
随机推荐
- mysql数据库优化之索引的维护和优化
这里是一个工具,即pt-duplicate-key-checker工具 用来检查重复及冗余的索引 用法如下:pt-duplicate-key-checker -uroot -p密码 -h127. ...
- CCF CSP 201812-1 小明上学
题目链接:http://118.190.20.162/view.page?gpid=T80 问题描述 试题编号: 201812-1 试题名称: 小明上学 时间限制: 1.0s 内存限制: 512.0M ...
- IDEA 热部署设置(JRebel插件激活)
参考原文链接:https://blog.csdn.net/feidi7783/article/details/80607374
- Java包装类之Integer的 "==" 判断数值是否相等的陷阱及原因分析
在好久以前的一次面试中,面试官问了我这么一个问题:“现在有 Integer a = 56, b = 56, c = 180, d = 180; 请问:a == b ,c == d 是否成立,也就是 ...
- opencv学习之路(41)、人脸识别
一.人脸检测并采集个人图像 //take_photo.cpp #include<opencv2/opencv.hpp> using namespace cv; using namespac ...
- Unix系统的启动
系统启动后: 第一个运行的进程是init 进程标识符为1. init派生一个getty.该进程负责打开终端端口,提供标准输入来源和标准输出.标准输出的去处,并且在屏幕上显示一个登录提示符 接下来执行/ ...
- top命令详解不完整的地方欢迎评论
第一行: top - 20:42:47 up 57 days, 1:25, 4 users, load average: 0.00, 0.00, 0.00 现在时间20:42:47,启动了57 ...
- Zynq启动流程
前言 Zynq启动流程和ARM处理器类似,PS部分是启动和配置过程的主设备,芯片引导必须由处理器驱动,系统上电复位后会读取设备模式引脚来决定从什么设备启动芯片.如下表Boot Devices条目所示, ...
- 洛谷 P1027 【Car的旅行路线】
题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第i个城市中高速铁路的单位里 ...
- laravel框架——验证码(第一种方法)
一.在框架根目录下下载图形验证码的组件 composer require gregwar/captcha=1.* 二.控制器代码 use Gregwar\Captcha\CaptchaBuilder; ...