「最小のサプライズ」と可変のデフォルト引数
Python を長年使用している人なら誰でも、次の問題に悩まされる (または引き裂かれる) でしょう。 リーリー
Python の初心者は、引数なしで呼び出されたこの関数が常に 1 つの要素のみを含むリストを返すことを期待します:[5]。結果は大きく異なり、非常に驚くべきものです (初心者にとって):
リーリー
######編集###:###
baczek は興味深い例を挙げました。あなたのコメントのほとんど、特にutaalのコメントと併せて、さらに詳しく説明します:リーリー 私にとって、設計上の決定は、パラメーターのスコープをどこに配置するかに関連しているように思えます。関数内に配置するか、それとも関数「とともに」配置するかです。
関数内でバインドするということは、x
が関数の呼び出し時に、定義ではなく、指定されたデフォルト値に効果的にバインドされることを意味します。これは重大な欠点をもたらします。def
行は次のようになります。 (関数オブジェクトの) バインディングの一部の「混合」は定義時に行われ、一部 (デフォルト パラメーターの割り当て) は関数呼び出し時に行われます。
実際の動作はより一貫しています。行が実行されるとき、つまり関数定義時に、行のすべての内容が評価されます。
正解
このように考えると完全に理にかなっています: 関数はその定義に従って評価されるオブジェクトです; デフォルト パラメーターは一種の「メンバー データ」であるため、その状態は呼び出しごとに変化する可能性があります - まさにその通りです。他のオブジェクトと同じように。
とにかく、effbot (Fredrik Lundh) が
Python のデフォルト パラメーター値
でこの動作の理由を詳しく説明しています。 これは非常に明確であることがわかり、関数オブジェクトがどのように機能するかをよりよく理解するために読むことを強くお勧めします。以上が「最小のサプライズ」と可変のデフォルト引数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

この記事では、Pythonライブラリである美しいスープを使用してHTMLを解析する方法について説明します。 find()、find_all()、select()、およびget_text()などの一般的な方法は、データ抽出、多様なHTML構造とエラーの処理、および代替案(SEL

Pythonの統計モジュールは、強力なデータ統計分析機能を提供して、生物統計やビジネス分析などのデータの全体的な特性を迅速に理解できるようにします。データポイントを1つずつ見る代わりに、平均や分散などの統計を見て、無視される可能性のある元のデータの傾向と機能を発見し、大きなデータセットをより簡単かつ効果的に比較してください。 このチュートリアルでは、平均を計算し、データセットの分散の程度を測定する方法を説明します。特に明記しない限り、このモジュールのすべての関数は、単に平均を合計するのではなく、平均()関数の計算をサポートします。 浮動小数点数も使用できます。 ランダムをインポートします インポート統計 fractiから

この記事では、深い学習のためにTensorflowとPytorchを比較しています。 関連する手順、データの準備、モデルの構築、トレーニング、評価、展開について詳しく説明しています。 特に計算グラップに関して、フレームワーク間の重要な違い

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

この記事では、コマンドラインインターフェイス(CLI)の構築に関するPython開発者をガイドします。 Typer、Click、Argparseなどのライブラリを使用して、入力/出力の処理を強調し、CLIの使いやすさを改善するためのユーザーフレンドリーな設計パターンを促進することを詳述しています。

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

この記事では、Pythonにおける仮想環境の役割について説明し、プロジェクトの依存関係の管理と競合の回避に焦点を当てています。プロジェクト管理の改善と依存関係の問題を減らすための作成、アクティベーション、およびメリットを詳しく説明しています。
