在函数中使用yield时,函数并不会返回数据,而是返回一个生成器对象(generator object),只有当循环遍历时,才会实际运行取得实际的值。
示例一是我看到一本书上的例子,示例二是我将它简化后的例子,功能上没有任何区别。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#示例一: def fileReadLines():
seek = 0
while True :
with open ( '/home/python/passwd' , 'r' ) as f:
f.seek(seek)
data = f.readline()
if data:
seek = f.tell()
yield data
else :
return
for item in fileReadLines():
print (item)
#示例二: def fileReadLine():
with open ( '/home/python/passwd' , 'r' ) as f:
for line in f:
yield line
for item in fileReadLine():
print (item)
|
daibaiyang119