siempre estoy molesto por este hecho:Volviendo Ninguno o una tupla y desembalaje
$ cat foo.py
def foo(flag):
if flag:
return (1,2)
else:
return None
first, second = foo(True)
first, second = foo(False)
$ python foo.py
Traceback (most recent call last):
File "foo.py", line 8, in <module>
first, second = foo(False)
TypeError: 'NoneType' object is not iterable
El hecho es que con el fin de descomprimir correctamente sin dificultad que tengo ya sea para coger el TypeError o tener algo como
values = foo(False)
if values is not None:
first, second = values
Que es un poco molesto. ¿Hay algún truco para mejorar esta situación (por ejemplo, establecer primero y segundo a Ninguno sin tener que devolver foo (Ninguno, Ninguno)) o una sugerencia sobre la mejor estrategia de diseño para casos como el que presento? * variables tal vez?
ooooh ... esto no lo consideré. enfoque muy "perverso", pero inteligente. –
No estoy de acuerdo con que sea perl-ish. 'x o y' es una forma muy pitonica de decir' (x? x: y) 'o' (si x luego x else y) 'o' (si no x luego y) 'o como quiera que quieras explicarlo . –
bien, acaba de salir de un "cantar" la frase típica de "lo que sea o muera()". –