ホームページ > バックエンド開発 > Python チュートリアル > Python で `str = str(...)` が TypeError を引き起こすのはなぜですか?

Python で `str = str(...)` が TypeError を引き起こすのはなぜですか?

Patricia Arquette
リリース: 2024-12-09 07:14:06
オリジナル
798 人が閲覧しました

Why Does `str = str(...)` Cause a TypeError in Python?

組み込み関数の再定義: 'str = str(...)' の TypeError を理解する

Python での変更組み込みオブジェクトが予期しないエラーを引き起こす可能性があります。次のコードを考えてみましょう:

def example(parameter):
    global str
    str = str(parameter)
    print(str)

example(1)
example(2)
ログイン後にコピー

このコードを実行すると、2 つの異なるシナリオが発生する可能性があります。 example() への最初の呼び出しは成功しますが、2 番目の呼び出しでは TypeError が発生します。これは、str への 2 番目の代入がその意味を再定義するためです。

str() の役割

Python では、str() は事前定義された関数です。オブジェクトを文字列に変換します。 str に新しい値を割り当てると、この組み込み機能が上書きされます。 str をグローバルとして宣言すると、関数の外部のトップレベル変数を参照する必要があることを示します。

コードの修正

問題を解決するにはTypeError の場合、2 つのオプションがあります:

  1. カスタムを使用する変数: example() 関数内のローカル変数に別の名前を選択します。 str のような予約された Python 名の使用は避けてください。
  2. グローバル ステートメントを削除します: str に新しい値を割り当てる前に、グローバル ステートメントを削除します。これにより、関数内でグローバル str 参照を変更できなくなります。

組み込みオブジェクトを変更すると、意図しない結果が生じる可能性があることに注意してください。 Python のデフォルトの動作との競合を防ぐために、関数内ではローカル変数を使用するようにしてください。

以上がPython で `str = str(...)` が TypeError を引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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