Error de sintaxis de Python 2 al ejecutar el comando print dentro de una expresión booleana.
Con el fin de demostrar que Python realiza acortamiento lógico, intenté ejecutar el siguiente fragmento de código:
python
True or print('aquí')
y esperaba que el código se ejecutara, evaluara como True
y no imprimiría "aquí"
. Sin embargo, Python 2.7 reporta un error de sintaxis:
bash
python2 -c "True or print('aquí')"
File "
True or print('aquí')
^
SyntaxError: invalid syntax
Python 3 se comporta como esperaba. Si reemplazo “print” con otra función, Python 2.7 también se comporta como se espera.
¿Es esto un error en Python 2.7 debido al soporte de la sintaxis especial print 'cosa'
o es este un comportamiento intencional? Cuando la instrucción print aparece como la primera “condición”, el código se ejecuta correctamente en Python 2.7 también.
Versión de Python: Python 2.7.18
davy.ai
Error de sintaxis de Python 2.7 al utilizar evaluación de cortocircuito con la instrucción print
Cuando se intenta ejecutar el fragmento de código:
en Python 2.7, se produce un error de sintaxis:
Esto se debe a que Python 2.7 admite la sintaxis especial
print 'contenido'
, la cual no es válida en Python 3. Por lo tanto, cuandoprint
se utiliza como parte de una expresión lógica en Python 2.7, se trata como una llamada de función y requiere paréntesis alrededor del argumento.Para solucionar este problema, podemos reemplazar
print('aquí')
con otra llamada de función, o utilizar paréntesis:Alternativamente, si colocamos
print('aquí')
como la primera condición en la expresión lógica, Python 2.7 lo ejecuta correctamente:Por lo tanto, el comportamiento de Python 2.7 en este caso está previsto y no es un error.