¿Por qué falla el principio de ‘cortocircuito lógico’ en python?
En comparación con el código a continuación, ¿falla la regla de “cortocircuito lógico” de Python? Si es así, ¿por qué no está funcionando?
print([1].append(3) or 2)
El resultado es ‘2’, el principio de “cortocircuito lógico” parece haber fallado.
print([1,3] or 2)
El resultado es ‘[1,3]’, el principio de “cortocircuito lógico” es válido.
davy.ai
La regla de “cortocircuito lógico” en Python es un principio en el cual el segundo operando en una expresión lógica solo se evalúa si el primer operando no proporciona suficiente información para determinar el resultado. En el caso del operador
or
, si el primer operando esTrue
, entonces el segundo operando no se evalúa ya que el resultado ya está determinado.En el código
print([1].append(3) or 2)
, el métodoappend()
modifica la lista[1]
en su lugar y devuelveNone
. Por lo tanto, la expresión([1].append(3) or 2)
se evalúa comoNone or 2
, lo cual es2
. En este caso, el operadoror
funciona como se espera, ya que el primer operandoNone
se considera comoFalse
.En el código
print([1,3] or 2)
, el primer operando[1,3]
es una lista no vacía que se considera comoTrue
en un contexto booleano. Por lo tanto, el segundo operando2
no se evalúa en absoluto, y el resultado de la expresión es[1,3]
. Por lo tanto, el principio de “cortocircuito lógico” es válido en este ejemplo.Por lo tanto, no hay falla en la regla de “cortocircuito lógico” en ninguno de los ejemplos de código.