[解決済み] Pythonで、ある変数の値を別の変数に代入するとどうなるか?
質問
Pythonを学び始めて2日目ですが(C++の基礎といくつかのOOPは知っています)、Pythonの変数について少し混乱しています。
以下は、私が現在それらを理解する方法です。
Pythonの変数は、オブジェクト(mutableかimmutableのどちらか)への参照(またはポインタ?) のようなものがあるとき
num = 5
のような場合、不変のオブジェクトである
5
がメモリのどこかに作られ、名前とオブジェクトの参照ペアの
num
はある名前空間に作られます。私たちが
a = num
の場合、何もコピーされませんが、今は両方の変数が同じオブジェクトを参照しており
a
は同じ名前空間に追加されます。
ここで、私の本の Pythonで退屈なことを自動化する は私を混乱させます。初心者の本なので、オブジェクトや名前空間などには触れておらず、次のようなコードを説明しようとしているのです。
>>> spam = 42
>>> cheese = spam
>>> spam = 100
>>> spam
100
>>> cheese
42
この本の説明は、C++の本と全く同じで、オブジェクトへの参照/ポインタを扱っている私としては不満が残ります。ということで、今回は3行目で、整数がimmutableであるため、推測しています。
spam
はメモリ上の別の場所への全く新しいポインタ/参照が割り当てられている、つまり、最初に指していたメモリは変更されていないのです。したがって、次のようになります。
cheese
が参照する最初のオブジェクトを参照しています。
spam
. これは正しい説明でしょうか?
どのように解決するのですか?
C++の開発者であれば、Pythonの変数をポインタと考えることができます。
したがって、あなたが
spam = 100
と書くと、それまでオブジェクト
42
を指していたポインターを、オブジェクト
100
.
さっきの。
cheese
と同じオブジェクトを指すように割り当てられていた
spam
が指しているのと同じオブジェクトを指すように割り当てられました。
42
であった。を変更していないため
cheese
を変更していないので、まだ
42
.
ポインタの代入は、指されたオブジェクトについて何も変更しないので、この場合、不変性は関係ありません。
関連
-
[解決済み] Python 3 の "python -m SimpleHTTPServer" に相当するものは何ですか?
-
[解決済み] Pythonの "assert "はどのように使うのですか?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] Pythonの旧スタイルのクラスと新スタイルのクラスの違いは何ですか?
-
[解決済み] Pythonでホームディレクトリを取得するための正しいクロスプラットフォームな方法は何ですか?
-
[解決済み] Pythonの変数名や関数名の命名規則について教えてください。
-
[解決済み] Pythonのシングルアンダーコア"_"変数の目的は何ですか?
-
[解決済み] dict.copy()を理解する - 浅いか深いか?
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?