me encontré con una expresión interesante en Ruby:¿Hay alguna expresión en Python que al igual que el rubí del || =
a ||= "new"
Esto significa que si una no está definido, se le asignará el "nuevo" valor a un; de lo contrario, a será lo mismo que es. Es útil cuando se hace una consulta DB. Si el valor está establecido, no deseo disparar otra consulta DB.
así que traté de la mentalidad similar en Python:
a = a if a is not None else "new"
Fracasó. Creo que es porque no se puede hacer "a = a" en Python, si a no está definido.
Así que las soluciones que pueden salir mirando locales() y globales(), o el uso de tratar ... excepto la expresión:
myVar = myVar if 'myVar' in locals() and 'myVar' in globals() else "new"
o
try:
myVar
except NameError:
myVar = None
myVar = myVar if myVar else "new"
Como podemos ver , las soluciones no son tan elegantes. Entonces me gustaría preguntar, ¿hay alguna forma mejor de hacer esto?
tenga en cuenta que el uso habitual de 'variable || = value' es establecer un valor predeterminado para una variable ya definida, usarlo para definir variables que pueden o no existir es una práctica humilde en mi humilde opinión. – tokland
La solución try-except es, creo, la más pitonica. Claro, no es tan conciso como un solo operador, pero es claro y legible. –
'myVar = myVar if myVar else" nuevo "' - tenga en cuenta que esto es python y no ruby, y muchas cosas se consideran falsas en un contexto booleano –