Home > Article > Backend Development > Generator yield in python
Generator yield: Using the yield statement
allows the function to generate a result sequence instead of just a value
def countdow(n): print("Start!"); while n>0: yield n; n -= 1; c = countdow(5); print(c.__next__()) print(c.__next__())
Output result:
Start! 5 4
__next__() method Make the generator function run until the next yield statement. At this time, the __next__() method passes the return value to yield and the function temporarily suspends execution
The function continues to execute when __next__() is called again. This process continues until generation until the generator function returns to the end
Usually the __next__() method is not called manually
Instead, a loop is used
for i in countdow(5): print(i);
Output results:
5 4 3 2 1
The generator is based on processing A powerful way to write programs with pipes, streams or data flows;
Such as:
def tail(f): for line in f: if not line : #如果 非真 则暂时休眠并且再次尝试 time.sleep(0.1); continue; yield line; # 将获取到的文件中的值 生成一个序列的值 filecount = tail(open('E:/work.txt')); #grep方法 用于在上面方法生成器中查找特定的子字符串 def grep(lines,searchtext): for line in lines: if searchtext in line : yield line; lines = grep(filecount,'tom'); #查找带有tom 的子字符串 for line in lines: print(line);
Output results:
'tom',120,132
Summary:
The role of the generator : When the program runs to yield, the running value
is passed to yield. The program will not output. It can be considered that the program is in a suspended state at this time. When the __next__() method is used, the function continues to execute
until it is encountered again. Go to yield
Advantages: yield does not store a single value, but saves the current program execution status instead of calculating all the elements at once but calculating it once to save memory space
The above is The content of the generator yield in python, please pay attention to the PHP Chinese website (www.php.cn) for more related content!