/ / En Python, ¿cuál es el punto de 'x o False' y 'False and x? - python, logic, web2py

En Python, ¿cuál es el punto de 'x o False' y 'False and x? - python, logic, web2py

Estoy trabajando con web2py y he estado buscando a través del código fuente para obtener Alguna mejor comprensión. Varias veces he visto tareas como

# in file appadmin.py
is_gae = request.env.web2py_runtime_gae or False

Si request.env.web2py_runtime_gae es cierto, entonces lo falso no importa. De cualquier manera, la expresión se vuelve falsa, si request.env.web2py_runtime_gae es falso.

Y también:

# in file appadmin.py
if False and request.tickets_db:
from gluon.restricted import TicketStorage

La segunda parte de la y La cláusula nunca se evalúa, porque Falso y x Siempre devuelve falso.

Entonces, ¿por qué uno haría algo así?

Respuestas

5 para la respuesta № 1

No es como lo que estás asumiendo. Pitón evalúa las condiciones perezosamenteEntonces, si se sabe que el valor satisface la condición, entonces la evaluación se cierra. Vea este ejemplo:

>>> None or False
False
>>> True or False
True
>>> 0 or False
False
>>> "Value" or False
"Value"

El segundo, según evaluación perezosa, simplemente regresará False en esa declaración y el resto de las declaraciones no serán evaluadas. Esta puede ser una manera de deshabilitar incondicionalmente esa instrucción if.


2 para la respuesta № 2
val = x or False

Asegura que val sea realmente "Falso" (escriba "bool") en lugar de valores de Falsey como 0 o "".

¿El segundo podría ser solo una desactivación temporal para esa condición?

¿El mejor lugar para investigar podría ser el historial de control de fuente?