Operador de asignación condicional en Python
-
Significado del operador
||=
en Ruby -
Implementar el operador de asignación condicional
||=
de Ruby en Python usando la declaracióntry...except
-
Implementar el operador de asignación condicional
||=
de Ruby en Python usando variableslocals
yglobals
No hay ningún equivalente exacto del operador ||=
de Ruby en Python. Sin embargo, podemos usar el método try...except
y los conceptos de variables locales y globales para emular el operador de asignación condicional de Ruby ||=
en Python.
Significado del operador ||=
en Ruby
x ||= y
El significado básico de este operador es asignar el valor de la variable y
a la variable x
si la variable x
no está definida o tiene un valor false
, de lo contrario no se realiza ninguna operación de asignación.
Pero este operador es mucho más complejo y confuso que otros operadores condicionales más simples como +=
, -=
porque siempre que cualquier variable se encuentra como indefinida, la consola arroja NameError
.
a+=b
se evalúa como a=a+b
.
a||=b
se ve como a=a||b
pero en realidad se comporta como a=a||b
.
Implementar el operador de asignación condicional ||=
de Ruby en Python usando la declaración try...except
Usamos try...except
para detectar y manejar errores. Siempre que se ejecuta el bloque try except
, al principio, se ejecuta el código que se encuentra dentro del bloque try
. Si el bloque de código dentro del bloque try
se ejecuta con éxito, entonces el bloque except
se ignora; de lo contrario, se ejecutará el código de bloque except
y se manejará el error. El operador ||=
de Ruby se puede traducir aproximadamente en el método try-catch
de Python como:
try:
x
except NameError:
x = 10
Aquí, si se define la variable x
, el bloque try
se ejecutará sin problemas sin excepción de NameError
. Por tanto, no se realiza ninguna operación de asignación. Si no se define x
, el bloque try
generará NameError
, luego se ejecuta el bloque except
y la variable x
se asigna a 10
.
Implementar el operador de asignación condicional ||=
de Ruby en Python usando variables locals
y globals
El alcance de las variables locales está confinado dentro de un alcance de código específico, mientras que las variables globales tienen su alcance definido en todo el espacio de código.
Todas las variables locales en un ámbito particular están disponibles como claves del diccionario locals
en ese ámbito particular. Todas las variables globales se almacenan como claves del diccionario global
. Podemos acceder a esas variables siempre que sea necesario utilizando el diccionario locals
y globals
.
Podemos comprobar si una variable existe en alguno de los diccionarios y establecer su valor solo si no existe para traducir el operador de asignación condicional ||=
de Ruby en Python.
if x in locals().keys():
locals().get(x)
elif x in globals().keys():
globals().get(x)
else:
x = 10
Aquí, si la variable x
está presente en el ámbito global o local, no realizamos ninguna operación de asignación; de lo contrario, asignamos el valor de x
a 10
. Es similar a x||=10
en Ruby.