Schneller Tipp: Verstehen des Keywords in Python
Vielen Dank an Shaumik Daityari für die freundliche Unterstützung bei der Überprüfung dieses Artikels.
Wenn wir in Python eine Funktion aufrufen, wird die Funktion normalerweise arbeiten, bis sie auf eine Rückkehr, Ausnahme trifft oder ihr Ende erreicht - danach gibt sie die Kontrolle an den Anrufer zurück. Wann immer Sie diese Funktion erneut aufrufen, beginnt der Vorgang von Scratch !
Sagen Sie, Sie haben eine Person gebeten, die roten Autos auf der Straße zu verfolgen. Die Person wird weiterhin eine Frage bekommen, die sie stellt, wenn sie ein rotes Auto entdeckt hat oder nicht, und die Person würde wiederum entweder mit „Ja“ oder „Nein“ antworten. Wenn die Person mit „Ja“ antwortete, steigt die Häufigkeit, mit der das rote Auto entdeckt wurde.
Mal sehen, wie wir dies in Python tun können:
import time def red_cars(answer): n = 0 while True: if answer == 'yes': n = n + 1 return n else: return n stop = time.time() + 5 * 60 while time.time() < stop: answer = raw_input('Did you spot a red car on the road? ("yes" or "no"): ') times = red_cars(answer) print 'You have spotted ' + str(times) + ' cars so far!'
Wenn Sie das Programm ausführen, was bemerken Sie dann? Haben Sie bemerkt, dass die Anzahl der Male für die Antwort "Ja" immer auf 1 begrenzt ist, und wenn Sie "Nein" beantworten, wird die Anzahl der Male 0
Hier kommt Pythons Ertrags -Keyword ins Spiel. Ertrag ist ein Mittel, mit dem wir den Anrufer vorübergehendHandregelung Handregelung erwarten, und erwarten, von dem Punkt weiterzumachen, an dem die Kontrolle übergeben wurde.
Bevor ich die Lösung für das obige Beispiel gibt, werde ich ein sehr einfaches Beispiel demonstrieren, um besser zu veranschaulichen, wie die Ertrag funktioniert.Sagen wir, wir haben das folgende einfache Python -Skript:
def step_by_step(): return 'step 1' return 'step 2' return 'step 3' step = step_by_step() for i in range (3): print step
step 1 step 1 step 1
def step_by_step(): yield 'step 1' yield 'step 2' yield 'step 3' step = step_by_step() for i in range (3): print step.next()
step 1 step 2 step 3
-Serie -Werte erstellen, wie für jeden Aufruf der Funktion von dem Punkt, an dem sie einen Wert ergibt. Diese Art von Funktion wird als Generator bezeichnet. Eine solche Funktion erstellt einen Generator -Iterator, wie bei jedem Aufruf der Methode als nächstes () wir zur nächsten Ertragsanweisung wechseln.
Wenn wir zu unserem Hauptbeispiel zurückkehren (rote Autos), kann es wie folgt geschrieben werden, um die erforderliche Aufgabe auszuführen:
import time def red_cars(answer = None): n = 0 while True: if answer=="yes": n = n + 1 answer = yield n else: answer = yield n car_color = red_cars() car_color.next() stop = time.time() + 5 * 60 while time.time() < stop: answer = raw_input('Did you spot a red car on the road? ("yes" or "no"): ') print 'You have spotted ' + str(car_color.send(answer)) + ' cars so far!'
Es gibt jedoch andere Verwendungen der Ertrag. Beispielsweise können Sie Rendite verwenden, wenn Sie eine Funktion haben, die eine Sequenz zurückgibt (z. B. Zeilen in einem Excel -Blatt), und Sie müssen über die Sequenz iterieren, ohne dass jeder Wert im Speicher gleichzeitig gleichmäßig ist. Das heißt, um Speicher zu speichern.
Ertrag kann auch bei der Arbeit mit iteraktiven verwendet werden, bei denen wir eine große Liste haben, die zwischen den Funktionen schwer zu übergeben ist. Zum Beispiel verwenden Pythons eingebaute Funktionen für Permutationen und Kombinationen im Itertools -Modul Rendite.
häufig gestellte Fragen (FAQs) zum Ertragsschlüsselwort in Python
Was ist der Unterschied zwischen den Keywords in Python Rendite und Rückgabe in Python? Das Rückgabe -Schlüsselwort wird verwendet, wenn eine Funktion einen Wert erzeugt und dann beendet. Sobald eine Funktion einen Wert zurückgibt, wird ausgeführt und die Steuerung an den Anrufer weitergegeben. Andererseits wird das Keyword für die Ausbeute in einer Funktion wie einer Rückgabeanweisung verwendet, erzeugt jedoch einen Wert und setzt die Ausführung der Funktion aus. Die Funktion kann später wieder aufgenommen werden, wo sie aufgehört hat, sodass sie im Laufe der Zeit eine Reihe von Werten erzeugen kann, anstatt sie alle gleichzeitig zu berechnen und sie wie eine Liste zurückzuschicken. Arbeiten Sie in Python? Wenn die Funktion aufgerufen wird, gibt sie einen Iterator zurück, beginnt jedoch nicht sofort die Ausführung. Wenn die nächste () -Methode des Iterators aufgerufen wird, beginnt die Funktion auszuführen. Sobald es auf das Keyword zum Ertrag trifft, gibt es das Argument zurück, das an die Ausführung von Rendite und eine Pause besteht. Die Funktion kann wieder aufgenommen werden, wo sie aufgerufen hat, indem Sie als nächstes () aufgerufen werden, sodass die Funktion eine Reihe von Werten im Laufe der Zeit erzeugt und sich als Generator verhält. In Python? 🎜>
für den Wert in Simple_generator ():print (Wert)
In diesem Beispiel ist Simple_generator eine Generatorfunktion, da das Keyword für die Ertragsrendite verwendet wird. Wenn wir das von Simple_generator () zurückgegebene Generatorobjekt iterieren, ergibt es 1, dann 2 und dann 3, wobei die Ausführung zwischen jeder Rendite pausiert. >
Mit dem Keyword in Python können Sie Funktionen schreiben, mit denen eine Folge von Ergebnissen im Laufe der Zeit erzeugt werden kann, anstatt sie alle gleichzeitig zu berechnen und sie beispielsweise in einer Liste zurückzugeben. Dies kann besonders nützlich sein, wenn das Ergebnissatz groß ist und Sie Speicher speichern möchten. Es ermöglicht Ihnen auch, Ihre eigenen iterablen Objekte zu erstellen und sie mit Python für Schleifen, Verständnisse und andere Funktionen zu verwenden, die eine iterable erwarten.Kann eine Funktion sowohl Ertrags- als auch Rückgabeanweisungen in Python enthalten? Es ist jedoch wichtig zu beachten, dass nach Ausführung einer Rückgabeanweisung die Ausführung der Funktion beendet wird und die Kontrolle an den Anrufer weitergegeben wird. Wenn also vor einer Ertragserklärung eine Rückgabeerklärung ausgeführt wird, wird die Ertragserklärung niemals erreicht. Wenn zuerst eine Ertragsanweisung ausgeführt wird, wird die Funktion pausiert und die Kontrolle wird an den Anrufer zurückgegeben, die Funktion kann jedoch später wieder aufgenommen werden. An diesem Punkt kann die Rückgabeanweisung ausgeführt werden.
Kann ich das Keyword in einer rekursiven Funktion in Python verwenden? Sie müssen sich jedoch daran erinnern, den rekursiven Anruf zu iterieren und jeden Wert zu ergeben. Andernfalls erhalten Sie ein Generatorobjekt anstelle der von Ihnen erwarteten Werte.
Was ist der Unterschied zwischen einer Generatorfunktion und einer normalen Funktion In Python? Wenn eine Generatorfunktion aufgerufen wird, gibt sie ein Generatorobjekt zurück, ohne die Ausführung der Funktion zu beginnen. Wenn die nächste () -Methode zum ersten Mal aufgerufen wird, beginnt die Funktion, bis sie das Keyword für den Ertrag erreicht, das einen Wert erzeugt. Die Funktion pausiert die Ausführung und die Steuerung wird an den Anrufer weitergeleitet. Wenn eine normale Funktion aufgerufen wird, wird die Ausführung unmittelbar begonnen und läuft bis zur Fertigstellung aus, wodurch ein Wert zurückgegeben wird. Ja, Sie können mehrere Ertragsanweisungen in einer einzelnen Funktion in Python verwenden. Wenn die Funktion aufgerufen wird, liefert sie jedes Mal einen Wert, wenn sie auf eine Ertragsanweisung stößt, deren Ausführung inneht und die Kontrolle an den Anrufer weitergibt. Wenn die nächste () -Methode der Funktion aufgerufen wird, wird die Ausführung fortgesetzt, von der sie aufgehört haben, bis sie auf die nächste Rendite -Anweisung trifft. Python? Sie können diese Ausnahme durch einen Versuch/außer Block verwenden. Hier ist ein Beispiel:
def Simple_Generator ():
Ertrag 1Ausbeute 2
Ausbeute 3gen = Simple_Generator ()
, während wahr:
Versuchen Sie:
drucken (next (gen))außer Stopperation:
Break
In diesem Beispiel fangen wir die Ausnahme der Stopperation auf und brechen aus der Schleife aus, wenn es keine gibt, wenn es keine gibt Weitere Werte zu ergeben.
Kann ich das Keyword in einer Lambda -Funktion in Python verwenden? Dies liegt daran, dass Lambda -Funktionen auf einen einzelnen Ausdruck beschränkt sind und das Keyword für Ertrag einen Anweisungskontext führt. Wenn Sie eine Generatorfunktion erstellen müssen, müssen Sie eine DEF -Anweisung verwenden, um eine normale Funktion zu definieren.
Das obige ist der detaillierte Inhalt vonSchneller Tipp: Verstehen des Keywords in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Dieses Pilotprogramm, eine Zusammenarbeit zwischen CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal und betätigten, rationalisiert ARM64 CI/CD für CNCF -Github -Projekte. Die Initiative befasst sich mit Sicherheitsbedenken und Leistung

Dieses Tutorial führt Sie durch das Erstellen einer serverlosen Bildverarbeitungspipeline mit AWS -Diensten. Wir werden ein Next.JS -Frontend erstellen, der in einem ECS -Fargate -Cluster eingesetzt wird und mit einem API -Gateway, Lambda -Funktionen, S3 -Eimer und DynamoDB interagiert. Th

Bleiben Sie über die neuesten technischen Trends mit diesen Top -Entwickler -Newsletters informiert! Diese kuratierte Liste bietet für jeden etwas, von KI -Enthusiasten bis hin zu erfahrenen Backend- und Frontend -Entwicklern. Wählen Sie Ihre Favoriten und sparen Sie Zeit, um nach REL zu suchen
