スタックにPython文字列が割り当てられるのはなぜですか?


回答:


7

そのビジュアライザーはスタック上の文字列データを表示していません。呼び出しスタックの一部として、ヒープデータへのローカル参照を示しています。これは、String参照がStringヒープ上の実際のオブジェクトを指すローカル変数であるJavaによく似ています。

ビジュアライザーは、気になるあらゆる種類の表現を単純化できます。Pythonの特定の実装で「Python文字列がスタックに割り当てられる」ことを意味するものではありません。


1

グレッグが彼の答えで言った、文字列はヒープに割り当てられています。

ビジュアライザーは「フレーム」部分にいくつかのオブジェクトを表示することを選択しましたが、これは私には間違っているようです。幸い、影響を受けるオブジェクト(int、string)は不変であるため、Pythonを学習している人にはほとんど影響がありません。したがって、影響についての推論はまだ可能です。

ただし、次のようなことをすると、メモリ内で文字列が複製されるという誤った印象を与えます。

x = "hello"
y = x
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.