Append、sort、extend などの Python のリスト変更メソッドは、代わりに None を返すという独特の動作をします。変更されたリスト自体。この設計上の決定は、プログラマの間で好奇心を呼び起こしました。
たとえば、Java では、list.sort() はソートされたリストを返し、開発者がメソッド呼び出しを簡単に連鎖できるようにします。しかし、Python ではこの連鎖は不可能であり、Python の設計者はなぜこの選択をしたのかという疑問が生じます。
設計原則: インプレース変更の強調
Python の基本的な設計原則の 1 つは、オブジェクトをインプレースで変更する関数は None を返す必要があるということです。これは、新しいオブジェクトが返されないことを微妙に伝えています。
Guido van Rossum の視点
Python の作成者である Guido van Rossum は、Python に関するこの決定の背後にある理論的根拠を説明しました。 -開発メーリングリスト。彼は、None を返すことで、複数の副作用呼び出しの連鎖によってもたらされる「可読性への脅威」を阻止すると示唆しています。
次の例では、連鎖形式:
x.compress().chop(y).sort(z)
には詳しい知識が必要です。チェーン内の各メソッドの。 2 番目の形式:
x.compress() x.chop(y) x.sort(z)
はより明示的であり、各メソッドが同じオブジェクトに対して動作することが明確になります。これは、特に不慣れなクラスやメソッドを使用する場合に、コードの明確さを維持するのに役立ちます。
ルールの例外
一般原則はインプレース変更です。 None を返す場合は例外があります:
ただし、van Rossum 氏が指摘しているように、混乱を避けるために、連鎖を新しい値を返す操作に限定することが重要です。読みやすさの問題もあります。
以上がPython のリスト変更メソッドが変更されたリストではなく「None」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。