Generatorertrag in Python

黄舟
Freigeben: 2017-01-19 17:21:09
Original
1435 Leute haben es durchsucht

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__())
Nach dem Login kopieren

Ausgabeergebnis:

Start!
5
4
Nach dem Login kopieren

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);
Nach dem Login kopieren
Ausgabeergebnis:


5
4
3
2
1
Nach dem Login kopieren
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);
Nach dem Login kopieren
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)!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!