python生成器函数以及生成器表达式
2017-11-28 19:52
295 查看
题外话:
前几天写爬虫的时候,使用一组代理ip,因为网站对单个ip有时间限制,所以使用这组ip突破限制,然后不停的复用这组ip,期间用到了生成器函数。
《python学习手册》中关于生成函数的解释:
先来段代码:
生成器是单迭代对象,只能迭代一遍。
待续
前几天写爬虫的时候,使用一组代理ip,因为网站对单个ip有时间限制,所以使用这组ip突破限制,然后不停的复用这组ip,期间用到了生成器函数。
《python学习手册》中关于生成函数的解释:
生成器函数:编写为常规的def语句,但是使用yield语句一次返回一个结果,在每个结果之间挂起和继续他们的状态。
先来段代码:
>>> def a(): ... print "head" ... for x in range(4): ... yield x ... >>> v = a() >>> print v <generator object a at 0x0000000002857AB0> >>> v.next() head 0 >>> v.next() 1 >>> v.next() 2 >>> v.next() 3 >>> v.next() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration >>>
send函数
>>> def b(): ... for x in range(10): ... i = yield x ... print i ... >>> B = b() >>> B.next() 0 >>> B.send(77) 77 1 >>> B.send(88) 88 2 >>> B.next() None 3 >>> B.next() None 4 >>>
生成器表达式,(和列表生成式不同的是,使用小括号)
>>> [x **2 for x in range(4)] [0, 1, 4, 9] >>> (x **2 for x in range(4)) <generator object <genexpr> at 0x0000000002857C18> >>> t = (x**2 for x in range(4)) >>> t.next() 0 >>> t.next() 1 >>> t.next() 4 >>> t.next() 9 >>> t.next() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
生成器是单迭代对象,只能迭代一遍。
待续
相关文章推荐
- 零基础学python-19.9 生成器函数与生成器表达式
- python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)
- Py修行路 python基础 (十二) 协程函数应用 列表生成式 生成器表达式
- 零基础学python-19.9 生成器函数与生成器表达式
- Python的生成器表达式与生成器函数
- Python 生成器函数,生成器表达式,迭代器,列表解析
- Python3之生成器函数及表达式
- Python3.2官方文档翻译--生成器以及生成器表达式
- python中函数的高级特性以及生成器
- Python 3 中生成器函数yield表达式的使用
- python 中的map(),zip()函数以及表达式lambda用法
- 零基础学python-19.9 生成器函数与生成器表达式
- python基础之协程函数、列表表达式、生成器表达式
- java8常用的函数,以及lamda表达式有非运行异常能否在外部捕获
- 零基础学python-19.6 生成器函数应用
- Python 中如何获取当前位置所在的文件名,函数名,以及行号
- 对比Python和C++的正则表达式函数 (一)
- 14. Python开发--生成器函数
- Python 进阶_生成器 & 生成器表达式
- Python学习之高阶函数与lambda表达式