how - python docstring
Asignación con "o" en python (3)
El peligro principal de hacer algo como esto es la posibilidad de que (en el segundo caso) some_variable
sea False pero no None (el entero 0
, por ejemplo) y no quiera terminar con y
igual a None en ese caso.
¿Se considera un estilo malo para asignar valores a variables como esta?
x = "foobar" or None
y = some_variable or None
En el ejemplo anterior, x obtiene el valor ''foobar''.
No, es una práctica común. Solo se considera mal estilo para expresiones que son considerablemente más largas que las tuyas.
También me siento un poco incómodo con ese tipo de expresiones. En Learning Python 4ed se llama "comportamiento algo inusual". Más tarde, Mark Lutz dice:
... resulta ser un paradigma de codificación bastante común en Python: para seleccionar un objeto no vacío de entre un conjunto de tamaño fijo, simplemente unirlos en una expresión o. En una forma más simple, esto también se usa comúnmente para designar un valor predeterminado ...
De hecho, producen expresiones concisas de una línea que ayudan a eliminar el ruido de línea del código.
Este comportamiento es la base de una forma del operador ternario if / else:
A = Y if X else Z