ホームページ > バックエンド開発 > Python チュートリアル > 「example = list(...)」が時々「TypeError: 'list' object is not callable」をスローするのはなぜですか?

「example = list(...)」が時々「TypeError: 'list' object is not callable」をスローするのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-07 09:35:12
オリジナル
510 人が閲覧しました

Why Does `example = list(...)` Sometimes Throw a `TypeError: 'list' object is not callable`?

「example = list(...)」が「TypeError: 'list' Object Is Not Callable」になるのはなぜですか?

REPL で、サンプル変数が文字列の文字のリストを保持することを期待してコード「example = list('easyhoss')」を試行すると、「TypeError:」というエラーが発生しました。 'list' オブジェクトは呼び出し可能ではありません。

これは、組み込み Python クラス "list" をリストのインスタンスで誤って上書きしたために発生します。後ほど「example = list('easyhoss')」で「list」を参照すると、Python はそれをインスタンスとして解釈しましたが、呼び出すことはできません。

これを理解するには、Python の名前空間とスコープ メカニズムを調べる必要があります。

名前空間: Python は、ネストされた名前空間を使用してオブジェクト名 (クラスや関数を含む) を保存します。各モジュールには、組み込み関数やクラスを含む独自の名前空間があります。

スコープ: 名前を参照するとき、Python は最初にローカル名前空間をチェックします。見つからない場合は、名前が見つかるか、それ以上の名前空間が見つからなくなるまで (結果として NameError が発生する)、上位レベルの名前空間に移動します。

あなたの場合、無意識のうちに "list" のインスタンスをグローバル "list" 変数:

example = list('easyhoss')  # "list" refers to the built-in class
list = list('abc')  # Creates a "list" variable referencing an instance of "list"
example = list('easyhoss')  # "list" refers to the instance, resulting in the error
ログイン後にコピー

この上書きにより、組み込みの "list" クラスが非表示になり、 "TypeError."

このエラーを回避するには、名前のシャドウイングを強調表示する Python プラグインを備えた PyCharm や Atom などの IDE を使用します。

追加の考慮事項:

  • 「list」はインスタンスをトリガーする呼び出し可能なクラスです
  • 「リスト」のインスタンス (list[]) は呼び出すことができません。
  • クラスとインスタンスの詳細については、Python のドキュメントを参照してください。

対話型 Python セッションを起動すると、独自の名前空間を持つ一時モジュールが作成されます。これは、名前空間の動作にも影響を与える可能性があります。

以上が「example = list(...)」が時々「TypeError: 'list' object is not callable」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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