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]
原文地址:https://www.cnblogs.com/chenadong/p/10010202.html