1.数组是一个可迭代对象,相似的还有链表,字符串,文件;数组能够是[1,2,3],也能够是[x*x for x in range(3)]; 他的缺点是全部数据都在内存中,若是数据量大的话,很是消耗内存;python
2.生成器是能够迭代的,可是只能够读取它一次,由于用的时候才生成, 好比 (x*x for x in range(3)), 这里用到的是(), 而不是[];数组
3.生成器可以迭代,是由于有一个next()方法,不断调用next(),直至出现异常;bash
4.函数带有yield时,便变成了一个生成器;函数
5.yield具备return做用,迭代一次就会返回yield右边的值,并记录这次迭代的位置,下一次迭代时,会今后次的yield的位置往下执行;ui
6.yield不止用于for循环, 也能够用于函数的参数,只要这个函数容许迭代参数, 好比array.extend();spa
7.send(msg)与next(),均可以用于生成器,send(msg)会传参数给生成器,返回生成器的第几回yield的返回值;生成器第一次调用时,要先调用next()或者send(None),由于第一次的时候,没有上一次yield的位置;code
8.yield from iterable
本质上等于for item in iterable: yield item
的缩写版;对象
#encoding:UTF-8
def yield_test(n):
for i in range(n):
yield call(i)
print("i=",i)
#作一些其它的事情
print("do something.")
print("end.")
def call(i):
return i*2
#使用for循环
for i in yield_test(5):
print(i,",")
复制代码
>>>
0 ,
i= 0
2 ,
i= 1
4 ,
i= 2
6 ,
i= 3
8 ,
i= 4
do something.
end.
>>> 复制代码
mkdir test_venv #建立虚拟环境所在的目录
cd test_venv #进入虚拟环境目录里
python -m venv test #建立test的虚拟环境 -- 执行后会生成一个test的文件夹,里面有初始化文件
cd test
source bin/activate #激活虚拟环境复制代码
持续更新...内存