Detaillierte Erläuterung der Beispielcodes für Ertrag und Generator in Python

高洛峰
Freigeben: 2017-03-15 14:01:47
Original
1715 Leute haben es durchsucht

Zuerst importieren wir aus einem kleinen Programm, definieren jeweils eine Liste und finden die Primzahlen darin. 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)
Nach dem Login kopieren

Aber wenn wir geben wollen eine Zahl, dann alle Primzahlen auflisten, die größer als diese Zahl sind? Wir könnten so schreiben:

def get_Prims(number):
    if is_Prims(number):
            return number
Nach dem Login kopieren

Aber sobald die Return-Funktion vollständig endet, nachdem die Kontrolle an den Aufrufer übergeben wurde, werden alle lokalen Variablen und die Funktionsarbeit verworfen. Der nächste Anruf 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()
Nach dem Login kopieren

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). Kontrolle Die Rechte wurden nicht übergeben.

for-Schleife ruft implizit die Funktion next() auf. Zu diesem Zeitpunkt ist der Generator für den Aufruf verantwortlich Wenn Sie bei jedem Aufruf der Methode next( ) einen Wert zurückgeben, übertragen Sie diesen Wert mit yield zurück, was der return-Anweisung entspricht.


Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Beispielcodes für Ertrag und Generator in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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!