組み込み関数を再定義すると文字列変換で TypeError が発生する
これは、関数内で str に代入するコードが後続の呼び出しで TypeError をトリガーする理由を説明しています。最初の試みとは異なり、その関数に追加されます。次のコード スニペットは、この問題を示しています。
def example(parameter): global str # Declares str as a global variable str = str(parameter) # Redefines str as a string print(str) example(1) # First call: successful string conversion example(2) # Second call: raises a TypeError
根本原因と解決策
スニペット内のグローバル ステートメントは、本質的に、組み込み型である str を再定義します。文字列を表します。 str() に新しい値を割り当てると、オブジェクトを文字列に変換する関数としてのデフォルトの機能がオーバーライドされます。
この問題を解決するには、関数内のローカル変数に別の名前を使用し、グローバル ステートメントを削除します。例:
def example(parameter): local_str = str(parameter) # Local variable with a different name print(local_str) example(1) # First call: successful string conversion example(2) # Second call: successful string conversion
対話型 Python シェルの影響
対話型シェルでこの問題が発生した場合、明示的に対処しない限り、グローバル str() への代入は継続します。これを解決する 1 つの方法は、インタープリタを再起動することです。あるいは、次のコマンドを使用して手動で割り当てを削除することもできます。
del str
str はデフォルトでは定義されたグローバル変数ではないことに注意してください。これは通常、Python の起動時にインポートされる builtins モジュール内にあります。
以上が組み込みの `str` 関数を再定義すると文字列変換で TypeError が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。