¿Hay alguna razón por la cual esto no funciona en Python?¿Por qué no hay continuidad de línea implícita de python en 'y', 'o', etc.?
if 1 != 1 or
2 != 2:
print 'Something is wrong...'
¿Hay alguna razón por la cual esto no funciona en Python?¿Por qué no hay continuidad de línea implícita de python en 'y', 'o', etc.?
if 1 != 1 or
2 != 2:
print 'Something is wrong...'
Quizás esto evite una ambigüedad gramatical, pero creo que este comportamiento está en el espíritu de PEP 20, específicamente 'Simple is better than complex' (entre otros). En otras palabras, 'A menos que tenga una buena razón, ¿por qué las expresiones deben abarcar varias líneas?'. Si tiene una buena razón, se proporcionan los dispositivos de sintaxis para evitar esto.
[editar] he hecho un poco más lectura, y hay algunas referencias de interés:
\
) continuación, pero se rechazó debido a la falta de soporte.
x = y+ # Used to be y+1, the 1 got dropped
f(x)
Mi punto final es, los actos de barra (o parens abiertas) actúa como un recordatorio de que la declaración continúa en la siguiente línea. Dependiendo de su sangría, es posible que la continuación se pueda confundir con una declaración separada (que creo que esta otra response toca).
+1 explicación plausible, aunque no demasiado convincente. – Mehrdad
Aparte de las anécdotas acerca de que python 'desalentó' este comportamiento, encontré algunas razones funcionales por las que este es el caso. –
Ahhhh el ejemplo 'y +' es genial, eso tiene mucho sentido; ¡Gracias! :) – Mehrdad
continuación de línea implícita sólo ocurre en Python si paréntesis, corchetes o llaves están abiertas. Ponga paréntesis alrededor de su condición y funcionará.
Pero, ¿por qué han elegido no hacer una continuación de línea implícita para 'y' y' o' sin paréntesis? ¿Hay una ambigüedad que no veo al hacerlo? –
@kindall: No me gustaría decirlo, pero te perdiste el sentido de mi pregunta. Estaba pidiendo el ** motivo **, no la solución. – Mehrdad
Porque "explícito es mejor que implícito"; una continuación de línea no marcada arroja al lector del código (especialmente en un idioma con espacios en blanco sintácticamente significativos), y el código se lee con mucha más frecuencia de lo que está escrito.
Esta es la razón real por la cual. Con un '\\' o un par coincidente como llaves, corchetes o paréntesis, es explícito que la línea no está terminada. – agf
+1 es suficiente. :) – Mehrdad
Creo que esto es a lo que se reduce y otros tipos de continuación no tienen tanto potencial para los problemas. –
Quizás simplemente no sintieron que valía la pena implementarlo. – Keith
La respuesta es correcta en su pregunta. 'import this' y léalo para la palabra' implicit'. – agf