5

これについては意見が分かれているようです-これを行うためのPythonicの「正しい方法」はありますか?

4

2 に答える 2

7

空の反復子の方が優れていると思います。なぜなら、何も繰り返さない方が速いからです。最初に戻り値が None でないかどうかを確認してから、反復するかどうかを確認します。

for x in function():
    do_something()

value = function()
if value is not None:
    for x in value:
        do_something()

これを見てください。

また、通常は iter 属性を None で初期化するのではなく、空の iter オブジェクトで初期化します。

self.list_of_users = []

いいえ

self.list_of_users = None
于 2013-02-01T04:05:27.287 に答える
5

私が従うように教えられた一般的な方法は、可能であれば、入力ドメイン内のすべての有効な値に対して同じデータ型を返すことです。他の人があなたのコードを使用しやすくなり、ドキュメントがきれいになります。有効な入力ドメイン外の値については、例外を発生させます。

この場合、None ではなく、空の反復子を使用する方が適切なようです。これらのインスタンスで他のプログラミング言語が null を返すことを好むことは知っていますが、あなたが説明したシナリオでそれを行うメリットはありません。

于 2013-02-01T05:02:21.740 に答える