python - Dividir expresiones condicionales largas en líneas
if-statement python-2.6 (3)
Podría invertir las pruebas y devolver False en subconjuntos de la prueba:
def is_valid(self):
if self.expires is not None and datetime.now() >= self.expires:
return False
if self.remains is not None and self.remains <= 0:
return False
return True
De esta forma puede romper la larga lista de pruebas y hacer que todo sea mucho más legible.
Sí, puede usar paréntesis adicionales alrededor de sus pruebas booleanas para permitir nuevas líneas en la prueba, pero la legibilidad sufre mucho cuando tiene que pasar por varias líneas.
Tengo algunas declaraciones if como:
def is_valid(self):
if (self.expires is None or datetime.now() < self.expires)
and (self.remains is None or self.remains > 0):
return True
return False
Cuando escribo estas expresiones mi Vim se mueve automáticamente and
a una nueva línea con esta misma sangría como if
línea. Intento más combinaciones de sangría, pero la validación siempre dice que es una sintaxis inválida. ¿Cómo construir long if?
coloque los saltos de línea entre corchetes if ((....) and (...)):
Agregue un nivel adicional de corchetes alrededor de toda la condición. Esto le permitirá insertar saltos de línea como desee.
if (1+1==2
and 2 < 5 < 7
and 2 != 3):
print ''yay''
En cuanto a la cantidad real de espacios para usar, la Guía de estilo de Python no ordena nada, pero da algunas ideas:
# No extra indentation.
if (this_is_one_thing and
that_is_another_thing):
do_something()
# Add a comment, which will provide some distinction in editors
# supporting syntax highlighting.
if (this_is_one_thing and
that_is_another_thing):
# Since both conditions are true, we can frobnicate.
do_something()
# Add some extra indentation on the conditional continuation line.
if (this_is_one_thing
and that_is_another_thing):
do_something()