在函数中使用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