Home  >  Article  >  Backend Development  >  Generator yield in python

Generator yield in python

黄舟
黄舟Original
2017-01-19 17:21:091448browse

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!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn