ホームページ > バックエンド開発 > Python チュートリアル > Python のリスト変更メソッドが変更されたリストではなく「None」を返すのはなぜですか?

Python のリスト変更メソッドが変更されたリストではなく「None」を返すのはなぜですか?

Susan Sarandon
リリース: 2024-12-27 21:35:10
オリジナル
448 人が閲覧しました

Why Do Python's List Modification Methods Return `None` Instead of the Modified List?

Python のリスト変更メソッドが None を返すのはなぜですか?

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 を返す場合は例外があります:

  • 新しい値を返す操作 (次のような文字列処理操作など) rstrip() と Split() は、変更または処理された文字列を返し、連鎖を可能にします。

ただし、van Rossum 氏が指摘しているように、混乱を避けるために、連鎖を新しい値を返す操作に限定することが重要です。読みやすさの問題もあります。

以上がPython のリスト変更メソッドが変更されたリストではなく「None」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート