Recientemente he estado experimentando con generadores de pitón un poco, y me encontré con el siguiente comportamiento curioso, y tengo curiosidad por entender por qué sucede esto y qué está pasando:Python - comportamiento curioso/inesperado - precedencia de los operadores
def generating_test(n):
for a in range(n):
yield "a squared is %s" % a*a # Notice instead of a**2 we have written a*a
for asquare in generating_test(3):
print asquare
salida:
a squared is 1
a squared is 2a squared is 2
Versus el siguiente script que genera la salida esperada:
def generating_test(n):
for a in range(n):
yield "a squared is %s" % a**2 # we use the correct a**2 here
for asquare in generating_test(3):
print asquare
Salida:
a squared is 0
a squared is 1
a squared is 4
aside: si realmente está formateando un entero, use '% d', no'% s'. – kojiro
O acepte la nueva sintaxis de 'format'. Pensé que era un poco largo cuando lo vi por primera vez pero me ha gustado. – DSM
Como me dijo una vez un compañero de trabajo, * siempre * uso una tupla después de '%' – chepner