python 遇到的一些坑
lst = [1, 2, 4] print lst.__iter__().next() # 打印出来的是 1 print lst.__iter__().next() # 打印出来的是 1 # 调用__iter__()方法的时候,生成一个迭代器对象;如上,第二次调用,先生成对象,然后返回的是该对象的第一个值 # 第二次和第一次打印的是两个不同的实例的next()方法,但是两个实例的的值是相同的
def func_1(a, b):
return a + b
def func_2():
for i in {1, 2}:
yield i
if __name__ == "__main__":
gen = func_2() # id(gen)= id_1
for j in (1, 3):
gen = (func_1(j, n) for n in gen) #id(gen)=id_2 # 相当于: gen = (func_1(3, n) for n in gen)
print list(gen)
>>>[7, 8]