io sono sempre infastidito da questo fatto:Tornando Nessuno o una tupla e spacchettamento
$ 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
Il fatto è che, al fine di decomprimere correttamente senza problemi che ho sia per prendere il TypeError o per avere qualcosa di simile
values = foo(False)
if values is not None:
first, second = values
Che è un po 'fastidioso. C'è un trucco per migliorare questa situazione (ad esempio per impostare sia il primo che il secondo su Nessuno senza dover tornare indietro (Nessuno, Nessuno)) o un suggerimento sulla migliore strategia di progettazione per casi come quello che presento? * variabili forse?
ooooh ... questo non l'ho preso in considerazione. approccio molto "perlativo", ma intelligente. –
Non sono d'accordo sul fatto che sia perl-ish. 'x o y' è un modo molto pitonico di dire' (x? x: y) 'o' (se x allora x else y) 'o' (se non x allora y) 'o comunque lo vuoi spiegare . –
ok, ho appena escogitato un "cantare insieme" la frase perl tipica di "qualunque o die()". –