txt - salto de linea python
¿Cómo hacer un salto de línea en el operador ternario de Python? (3)
PEP8 dice que la forma preferida de romper líneas largas es mediante paréntesis :
La forma preferida de ajustar líneas largas es mediante el uso de la continuación de la línea implícita de Python entre paréntesis, corchetes y llaves. Las líneas largas se pueden dividir en varias líneas envolviendo expresiones entre paréntesis. Estos se deben usar en lugar de usar una barra invertida para la continuación de la línea.
answer = (''Ten for that? You must be mad!''
if does_not_haggle(brian)
else "It''s worth ten if it''s worth a shekel.")
A veces, una línea que contiene un operador ternario en Python se vuelve demasiado larga:
answer = ''Ten for that? You must be mad!'' if does_not_haggle(brian) else "It''s worth ten if it''s worth a shekel."
¿Hay una forma recomendada de hacer un salto de línea en 79 caracteres con un operador ternario? No lo encontré en PEP 8 .
Siempre puede extender una línea lógica a través de varias líneas físicas con paréntesis:
answer = (
''Ten for that? You must be mad!'' if does_not_haggle(brian)
else "It''s worth ten if it''s worth a shekel.")
Esto se llama unión de línea implícita .
Lo anterior usa el estilo PEP8 de todo, con sangría, un paso más (llamado sangría colgante ). También puede sangrar líneas adicionales para que coincidan con el paréntesis de apertura:
answer = (''Ten for that? You must be mad!'' if does_not_haggle(brian)
else "It''s worth ten if it''s worth a shekel.")
pero esto te deja golpear el máximo de 80 columnas más rápido.
Donde precisamente pones las porciones if
y else
depende de ti; Utilicé mi preferencia personal arriba, pero aún no hay un estilo específico para el operador que todos estén de acuerdo.
Tenga en cuenta este consejo del Zen de Python : "La legibilidad cuenta".
El operador ternario es más legible cuando está todo en una línea.
x = y if z else w
Cuando sus condiciones o variables empujan la línea más allá de los 79 caracteres (ver PEP8), la legibilidad comienza a sufrir. (La legibilidad también es la razón por la cual es mejor mantener cortas las comprensiones de dictados / listas).
Por lo tanto, en lugar de intentar romper la línea con paréntesis, puede encontrar que es más legible si la convierte a un bloque regular if
.
if does_not_haggle(brian):
answer = ''Ten for that? You must be mad!''
else:
answer = "It''s worth ten if it''s worth a shekel."
BONIFICACIÓN: la refactorización anterior revela otro problema de legibilidad: does_not_haggle
es la lógica invertida. Esto sería aún más legible, si puede reescribir la función:
if haggles(brian):
answer = "It''s worth ten if it''s worth a shekel."
else:
answer = ''Ten for that? You must be mad!''