Duplicar posible:
The Python yield keyword explained¿Qué hace el rendimiento en Python 2.7?
Está bien, probablemente ha enunciado la pregunta mal, pero esta es la situación que tengo.
tengo esta línea de código en Python 2.7, que estoy tratando de entender:
yield (padding_zeros + number_string).encode("ascii")
En esta línea de código, padding_zeros
es una cadena de un número variable de '0 y number_string
es un número en la forma de una cadena que puede ser cualquier número entre 0, digamos 10000.
Estoy bastante seguro de que el .encode("ascii")
simplemente convierte la producción de rendimiento en ascii.
Lo que estoy completamente en el mar es lo que hace el yield (padding_zeros + number_string)
.
Sé que inicia un generador, pero he pasado mucho tiempo buscando en línea y leyendo sobre la sintaxis, pero todavía no puedo averiguar qué es lo que el generador realmente hace. No ayuda que esta sea la primera vez que miro python (mi objetivo final es convertir este código a C#).
Entonces, básicamente, ¿podría alguien explicarme qué hace esta línea de código? ¿Simplemente agrega las dos cuerdas o hace algo un poco más complicado?
Para más contexto, este es el bloque que esa línea de código aparece en:
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")
(max_length
siendo exactamente lo que suena - un número que indica la longitud máxima de algo)
Gracias de antemano por todas las respuestas (incluso si me dicen que no sea un novato travieso) :)
EDIT: Gracias por las respuestas, aunque solo pude p ick one como la mejor respuesta, todos fueron muy útiles. Y gracias por los comentarios también, como algunos de ellos señalaron, What does the "yield" keyword do in Python? es una muy buena guía general de rendimiento, generadores e iteraciones, incluso si no encuentro una respuesta a mi situación específica :)
¿Es esta Python 2 o Python 3? –
Hola George, tu pregunta ha sido respondida aquí bastante bien. Siento: http://stackoverflow.com/questions/231767/the-python-yield-keyword-explicado – MattH
Ver esta respuesta: http://stackoverflow.com/questions/231767/the-python-yield-keyword-explain/231855 # 231855 –