入門チュートリアル、ケースのソースコード、学習教材、読者層
python666.cnにアクセスしてください。
みなさんこんにちは、Crossinのプログラミング教室へようこそ!
前回は、Python の変数の基本について少しお話しました。今日はこの話題の続きをしましょう。
1. 変数の代入
前述したように、Python の「代入」演算子は等号 (=) です。変数は代入操作を通じて作成でき、変数の既存の値を変更することもできます。
すると誰かがこう言います。
a = 1 を割り当てることができるのに、1 = a ではエラーが報告されるのはなぜですか? それはすべて方程式ではないでしょうか?
これは、Python の代入演算子 (=) が数学における等価と同等ではないためです。数学では、方程式は交換法則を満たしており、左辺と右辺を入れ替えても問題ありません。しかし、プログラミングにおける代入は方向性があり、等号の右側の結果を左側の変数に代入します。
割り当ての方向性を理解すると、多くの文法を理解するのが簡単になります。
a = 1
右側の値 1 を左側の変数 a に代入するというものですが、これで問題ありません。
1 = a
右側は変数 a の値で問題ありませんが、左側に割り当てられた値は値であり、機能しないため、エラーが報告されます。❌
右側の「結果」は左側の変数に代入されるため、右側は固定値だけでなく計算式にすることもできます。
a = 1 + 2 * 3 ** 4 / 5
この計算には変数を含めることもできます。
b = 3
a = b * 2 + 3
計算式自体が実行可能であれば、関数を含めることもできます。
a = input() + 'abc'
したがって、割り当てられた変数自体も、右側の計算式の一部として使用できます。
a = 2
a = a + 1
この式は数学的な観点からは明らかに有効ではありませんが、プログラミングでは非常に一般的であり、その機能は変数 a の値を 1 増やすことです。
簡略化した書き方もあります。
a += 1
-=、*=、/=、%=、//= などもあります。
C++ を学習したことがある場合は、変数を 1 ずつインクリメントする次のステートメントを記述する、より単純な方法があることを知っているはずです。
a++
ただし、申し訳ありませんが、これは Python なので、このように書くことはできません。❌
数学における等価性に関しては、Python には次のようなより近い比較演算子 (==) があります。
a == 1
2 == a
1 + 3 == a + 3
左辺と右辺の計算結果が等しいか、結果が True か False かを判定 (==) するために使用されます。これについては次回お話ししましょう。
2. Python 変数は「コンテナ」ではありません
以下はもう少し高度なものです。
変数の使い方を理解すると、変数をカップと同じようにデータを入れる「入れ物」として、そこに飲み物を注ぐのが代入、別の飲み物を注ぐのが再代入と考える人が多いかもしれません。
C++ のような言語では、この理解は問題ありません。このため、C++ では型を決定するために変数を使用する前に変数を「定義」する必要があり、プログラムは対応するメモリ空間を割り当てます。
残念ながら、Python ではこの理解は間違っています。❌
Python の変数は、データのコンテナーというよりは、データに付けられたラベルです。
変数はスペースを占有しません。スペースを占有するのはデータ自体です。再割り当てする場合は、ラベルを剥がして別のデータを貼り付けることと同じになります。
Python では、関数、クラス、モジュール、文字列「hello」も含めてすべてがオブジェクトであり、数字の 1、2、3 もすべてオブジェクトです。
例を挙げて説明すると、次のようになります。
a = 1
b = 2
c = 1
# 再次赋值
a = b
このコードでは、a と c は実際には同じオブジェクト (整数 1) を指します。b に値を代入すると、a は 2 を指すラベルになりますが、1 も c も影響を受けません。
回路図:
もう少し説得力のある検証:
a = 1
print('a', a, id(a))
b = 2
print('b', b, id(b))
c = 1
print('c', c, id(c))
# 再次赋值
a = b
print('a', a, id(a))
出力:
a 1 4301490544
b 2 4301490576
c 1 4301490544
a 2 4301490576
id() は、 オブジェクトのアドレスを取得するものと考えることができます。実際には、a と c は最初は同じアドレスであり、代入後も a と b は同じアドレスであることがわかります。
変数が再割り当てされるたびに、変数は元のアドレスとは関係のない新しいアドレスを指します。
この点に関する詳細な説明については、以前の記事を参照してください。
Python での変数の代入について他に知りたいことは何ですか? メッセージエリアでのディスカッションを歓迎します。
以下はビデオの時間です。皆さんのご注目、いいね、転送を歓迎します。
Crossinの新刊『Action on Code: 基礎ゼロから学ぶPYTHONプログラミング(CHATGPT編)』が発売になりました。
本書は、プログラミング経験がまったくないゼロベースの「初心者」でもPythonを学べるよう、分かりやすさを心がけています。内容は、環境構築の最も基本的な手順から始まり、徐々に一般的な実践的なアプリケーションに深く入っていきます。知識のポイントを解説しながら、対応するコード例も掲載しているので、学習・実践して理解を深めることができます。この本ではまた、プログラミング学習の補助として ChatGPT を革新的に使用しており、読者が AI 時代のプログラミング学習の新しいモードを模索するように導きます。
公式アカウントの読者や友人は、購入後にバックグラウンドで私に連絡し、読者交換グループに参加することができ、Crossin が付属の読書モードを開き、この本を読んでいるときのすべての質問に答えます。
リツイートといいねありがとうございます〜
_前の記事のおすすめ_
有料の質の高いコースや指導Q&Aサービスについて知りたい場合
クロシンのプログラミング教室: 666にご返信ください。