2

Python で次の同時割り当てを実行したいと思います。

a, b = some_function()

ただし、私の手に負えない理由により、一部の代わりにsome_function戻る場合があります。これが発生した場合、 と の両方に同時に割り当てることはできないため、次のエラーが発生します。Nonex, yNoneab

TypeError: 'NoneType' object is not iterable

この状況を処理するPythonicの方法は何ですか? ブロックtryか何か?

4

2 に答える 2

4
a, b = some_function() or (None, None)

注意してください、これはa, b = None, Noneすべての false-ish 戻り値に対して与えます。しかし、あなたの場合、空でないタプルは常に真っぽいので、それは問題ではありません。

于 2013-09-12T14:17:39.773 に答える
2

最初に単一の変数の戻り値をタプルとして割り当ててから、それに応じてアンパックできます (戻り値が の場合は、ダミーのタプルを割り当てることができますNone)。

tup = some_function()
a, b = tup if tup else (-1, -1)

ただし、それが最もpythonicな方法であるかどうかはわかりません。

于 2013-09-12T14:15:53.110 に答える