Python相关--用于自查

189 阅读2分钟

一.yield

1.数组是一个可迭代对象,类似的还有链表,字符串,文件;数组可以是[1,2,3],也可以是[x*x for x in range(3)]; 他的缺点是所有数据都在内存中,如果数据量大的话,非常消耗内存;

2.生成器是可以迭代的,但是只可以读取它一次,因为用的时候才生成, 比如 (x*x for x in range(3)), 这里用到的是(), 而不是[];

3.生成器能够迭代,是因为有一个next()方法,不断调用next(),直至出现异常;

4.函数带有yield时,便变成了一个生成器;

5.yield具有return作用,迭代一次就会返回yield右边的值,并记录此次迭代的位置,下一次迭代时,会从此次的yield的位置往下执行;

6.yield不止用于for循环, 也可以用于函数的参数,只要这个函数允许迭代参数, 比如array.extend();

7.send(msg)与next(),都可以用于生成器,send(msg)会传参数给生成器,返回生成器的第几次yield的返回值;生成器第一次调用时,要先调用next()或者send(None),因为第一次的时候,没有上一次yield的位置;

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.  
>>> 

二:关于Python3自带的虚拟环境venv

mkdir test_venv            #创建虚拟环境所在的目录
cd test_venv               #进入虚拟环境目录里
python -m venv test        #创建test的虚拟环境 -- 执行后会生成一个test的文件夹,里面有初始化文件
cd test
source bin/activate        #激活虚拟环境

持续更新...