Considere esta línea:manera Pythonic para asignar valores por defecto
some_value = lst.attr[idx]
Hay dos posibles errores aquí, el attr
no podría existir, y el idx
podrían estar fuera de rango.
¿Hay alguna forma elegante de reducir esta afirmación? Idealmente, a algo como esto:
some_value = lst.attr[idx] or default_value
(.. No trate de que en su casa que sólo funciona para las expresiones adecuadamente definidos que dan como resultado algo)
seguro de que puedo hacer:
try:
some_value = lst.attr[idx]
except:
some_value = default_value
¿Pero y si estoy en el contexto de una tarea? Por ejemplo:
print [x.attr[idx] for x in y]
Cuál es la forma Pythonic para controlar los errores y asignar valores por defecto en este caso?
No es tarea muy común, por lo que no es (supongo) solución incorporada. Pero puede escribir su propia función getter y usarla en cualquier lugar que desee (en listas de comprensión también). – DrTyrsa
¿Qué pasa con la 'excepción'? Eso ** es ** Ptónico. El "qué sucede si estoy en el contexto de una tarea" muestra una declaración impresa, no una tarea. ¿Puedes aclarar la afirmación y cuál es el posible problema que causaría 'except'? No está claro por qué el 'excepto' es inaceptable. Por favor aclara –
@ S.Lott - la lista de comprensión es un ejemplo de una tarea. Piensa en la diferencia entre un bloque if-else y un operador ternario. –