Heim  >  Artikel  >  Backend-Entwicklung  >  Generatorertrag in Python

Generatorertrag in Python

黄舟
黄舟Original
2017-01-19 17:21:091424Durchsuche

Generator-Ertrag: Mithilfe der Yield-Anweisung
kann die Funktion eine Folge von Ergebnissen anstelle nur eines Werts generieren

def  countdow(n):  
     print("Start!");  
     while n>0:  
          yield n;  
          n -= 1;  
c = countdow(5);  
print(c.__next__())   
print(c.__next__())

Ausgabeergebnis:

Start!
5
4

Die Methode __next__() bewirkt, dass die Generatorfunktion bis zur nächsten yield-Anweisung ausgeführt wird. Zu diesem Zeitpunkt übergibt die Methode __next__() den Rückgabewert an yield und die Funktion unterbricht die Ausführung vorübergehend Der Prozess wird fortgesetzt, bis die Generatorfunktion zum Ende zurückkehrt
Normalerweise wird die __next__()-Methode nicht manuell aufgerufen
, sondern es wird eine Schleife verwendet

for i in  countdow(5):  
 print(i);
Ausgabeergebnis:


5
4
3
2
1
Generator ist eine leistungsstarke Möglichkeit, Programme basierend auf der Verarbeitung von Pipelines, Streams oder Datenflüssen zu schreiben

Zum Beispiel:

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);
Ausgabeergebnis:

'tom',120,132
Zusammenfassung:
Die Rolle des Generators: Wenn das Programm nach Yield ausgeführt wird, wird der laufende Wert
an Yield übergeben Das Programm befindet sich zu diesem Zeitpunkt in einem angehaltenen Zustand. Bei Verwendung der Methode __next__() Wenn die Funktion so lange ausgeführt wird, bis sie erneut auf yield trifft

Vorteile: yield speichert keinen einzelnen Wert, sondern den Aktueller Programmausführungsstatus, anstatt alle Elemente auf einmal zu berechnen, um Speicherplatz zu sparen

Das Obige ist der Inhalt des Generatorertrags in Python. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn