Mögliche Duplizieren:
The Python yield keyword explainedWas macht die Ausbeute in Python 2.7?
Okay, habe ich formuliert wahrscheinlich die Frage schlecht, aber das ist die Situation, die ich habe.
Ich habe diese Zeile Code in Python 2.7, die ich zu verstehen, ich versuche:
yield (padding_zeros + number_string).encode("ascii")
In dieser Codezeile ist padding_zeros
eine Zeichenfolge aus einer variablen Anzahl von ‚0-en und number_string
eine Zahl in Form einer Zeichenfolge, die eine beliebige Zahl zwischen 0 bis, sagen wir 10000 sein kann.
Ich bin ziemlich sicher, dass die .encode("ascii")
konvertiert nur die Ausgabe von Ertrag zu Ascii.
Was ich bin völlig auf See ist, was die yield (padding_zeros + number_string)
tut.
Ich weiß, dass es einen Generator initiiert, aber ich habe viel Zeit damit verbracht, online zu suchen und auf der Syntax zu lesen, aber ich kann immer noch nicht herausfinden, was der Generator tut. Es ist nicht hilfreich, dass ich Python das erste Mal betrachte (mein ultimatives Ziel ist es, diesen Code in C# umzuwandeln).
Also, im Grunde könnte bitte jemand mir erklären, was diese Codezeile tut? Fügt es einfach die beiden Strings zusammen oder macht es etwas komplizierter?
Für weiteren Kontext, das ist der Block, dass die Codezeile in erscheint:
for current_length in range(4, max_length + 1):
for i in range(0, pow(10, current_length)):
number_string = str(i)
padding_zeros = "0" * (current_length - len(number_string))
yield (padding_zeros + number_string).encode("ascii")
(genau max_length
zu sein, was es klingt - eine Zahl, die die maximale Länge von etwas anzeigt)
Vielen Dank im Voraus für alle Antworten (auch wenn sie mir sagen, dass ich nicht so ein frommes Noob sein soll) :)
EDIT: Vielen Dank für die Antworten - obwohl ich nur p ick eins als das beste answe sie waren alle sehr hilfsbereit. Und danke für die Kommentare auch - wie einige von ihnen darauf hingewiesen, What does the "yield" keyword do in Python? ist eine sehr gute allgemeine Anleitung zum Ertrag, Generatoren und Iterationen, auch wenn ich keine Antwort auf meine spezifische Situation gefunden habe :)
Ist das Python 2 oder Python 3? –
Hallo George, Ihre Frage wurde hier ziemlich gut beantwortet Ich fühle: http://StackOverflow.com/Questions/231767/the-Python-Yield-Keyword-explained – MattH
Siehe diese Antwort: http://StackOverflow.com/Questions/231767/the-python-yield-keyword-declared/231855 # 231855 –