Heim > Artikel > Backend-Entwicklung > Analyse von Ertrag und Generator in Python
Zuerst importieren wir aus einem kleinen Programm, definieren jeweils eine Liste und suchen darin die Primzahlen. Wir werden so schreiben
import math def is_Prims(number): if number == 2: return True //除2以外的所有偶数都不是素数 elif number % 2 == 0: return False //如果一个数能被除1和本身之外的数整除,则为合数。其实我们的判定范围到根号n就可以 for cur in range(2,int(math.sqrt(number))+1,2): if number % cur == 0: return False else: return True def get_Prims(input_list): result_list = list() for element in input_list: if is_Prims(element): result_list.append(element) return result_list aa = get_Prims([1,2,3,4,5,6,7,8,9]) print (aa)
Aber wenn wir eine Zahl angeben und dann auflisten möchten die Zahlen, die kleiner als diese Zahl sind. Was ist mit allen Primzahlen, die groß sind? Wir könnten so schreiben:
def get_Prims(number): if is_Prims(number): return number
Aber sobald die Return-Funktion die Kontrolle an den Aufrufer übergibt und vollständig beendet wird, werden alle lokalen Variablen und Funktionsarbeiten verworfen und der nächste Aufruf beginnt von vorne. Daher können wir die folgende Schreibmethode verwenden:
def get_Prims(number): while(True): if is_Prims(number): yield number number += 1 def get_numbers(): total = list() for next_prim in get_Prims(2): if next_prim < 100: total.append(next_prim) else: print(total) return get_numbers()
Erklären wir die Generatorfunktion. Der Def-Code einer Funktion enthält yield und die Funktion wird automatisch zu einer Generatorfunktion (auch wenn sie noch return enthält). , Generator Die Funktion erstellt einen Generator (eine spezielle Form des Iterators, dieser Iterator verfügt über eine integrierte __next__()-Methode. Wenn ein Wert benötigt wird, wird er im Gegensatz zu gewöhnlichen Funktionen durch „yield“ generiert). Diesmal wird die Kontrolle nicht übergeben.
Die for-Schleife ruft implizit die Funktion next() auf. Die Funktion next() ist für den Aufruf der Methode __next__() im Generator verantwortlich Methode, die next() aufruft. Use Yield gibt diesen Wert zurück, was der return-Anweisung entspricht.
Weitere Artikel zur Ertrags- und Generatoranalyse von Python finden Sie auf der chinesischen PHP-Website!