


型キャストを繰り返した後、Python コードで「TypeError: 'str' object is not callable」がスローされるのはなぜですか?
型キャストの謎: 2 回目の TypeError の探索
Python コードを扱うとき、一見矛盾しているように見える複雑な TypeError に遭遇することは珍しくありません。 。このような謎の 1 つは、str = str(...) のようなコードを複数回試行するときに発生します。
不可解な問題
次のコード スニペットを考えてみましょう:
def example(parameter): global str str = str(parameter) print(str) example(1) example(2)
このコードを実行すると、サンプル関数の最初の呼び出しは問題なく機能します。ただし、2 番目の呼び出しでエラーがトリガーされます。
Traceback (most recent call last): File "test.py", line 7, in <module> example(2) File "test.py", line 3, in example str = str(parameter) TypeError: 'str' object is not callable</module>
説明
この複雑な動作は、グローバル ステートメントの使用に起因します。グローバル変数とローカル変数の複雑さについては詳しく説明しませんが、ここで重要な点は、コードが組み込み str 関数を変更しているということです。
グローバル str を実行すると、事実上、 str のローカル バージョンではなくグローバル バージョン。ただし、その後、グローバル str を文字列として再定義します。 str は Python 言語に不可欠であり、変更すべきではないため、これは問題です。
解決策
この問題を解決するには、グローバル str 変数の再定義を避けるだけです。代わりに、ローカル変数に別の名前を使用し、グローバル ステートメントを削除してください。修正されたコードは次のようになります。
def example(parameter): new_str = str(parameter) print(new_str)
追加メモ
Python REPL でこのようなコードを使用した場合、割り当てはグローバル str への変更は、さらにアクションを実行するまで保持されます。インタプリタを再起動するか、del str を使用してグローバル str を削除できます。
今後このようなエラーを防ぐには、グローバル変数とローカル変数の間の相互作用を理解することが不可欠です。組み込み Python 関数の変更を慎重に避けることで、コードがスムーズかつ一貫して実行されるようにすることができます。
以上が型キャストを繰り返した後、Python コードで「TypeError: 'str' object is not callable」がスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

pythonusesahybridmodelofcompilation andtertation:1)thepythoninterpretercompilessourcodeodeplatform-indopent bytecode.2)thepythonvirtualmachine(pvm)thenexecuteTesthisbytecode、balancingeaseoputhswithporformance。

pythonisbothintersedand compiled.1)it'scompiledtobytecode forportabalityacrossplatforms.2)bytecodeisthenは解釈され、開発を許可します。

loopsareideal whenyouwhenyouknumberofiterationsinadvance、foreleloopsarebetterforsituationsは、loopsaremoreedilaConditionismetを使用します

henthenumber ofiterationsisknown advanceの場合、dopendonacondition.1)forloopsareideal foriterating over for -for -for -saredaverseversives likelistorarrays.2)whileopsaresupasiable forsaresutable forscenarioswheretheloopcontinupcontinuspificcond

pythonisnotpurelyLepted; itusesahybridapproachofbytecodecodecodecodecodecodedruntimerttation.1)pythoncompilessourcodeintobytecode、whodythepythonvirtualmachine(pvm).2)

ToconcatenateListsinpythothesheElements、使用:1)Operatortokeepduplicates、2)asettoremoveduplicates、or3)listcomplunting for controloverduplicates、各メトドハスディフェルフェルフェントパフォーマンスアンドソーダーインプリテーション。

pythonisantertedlanguage、useaseofuseandflexibility-butfactingporformantationationsincriticalapplications.1)解釈されたlikepythonexecuteline-by-lineを解釈します

Useforloopswhenthenumberofiterationsisknowninadvance、andwhiloopswheniterationsdependonacondition.1)forloopsareidealforsecenceslikelistoranges.2)


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール
