変数とは
変数とは「扱うデータを読み書きする記憶域 (storage) のことであり、固有の名前(識別子)によって識別される」(wiki)です。
コンピュータはデータを扱いますが、変数を用いることでデータをある領域に名前を付けて保存しておくことができます。
Pythonに限らず、ほとんどすべてのプログラミング言語では変数の概念が存在します。

命名規則
変数名文字の範囲
大文字と小文字の A
から Z
、アンダースコア _
、先頭の文字を除く数字 0
から 9
です。
「Python 3.0 は、さらに ASCII 範囲外から文字を導入します (PEP 3131 1を参照してください。)」とあるので日本語も使用可能です。
ただし、英語で書くのが一般的です。
OK | NG |
abc ABC _ab abc1 あいう | $abc 0abc |
空白文字は使えない
Pythonでは空白文字を使うとエラーになります。
変数名に半角スペースを挟んだ場合と挟まなかった場合を比較してみましょう
OK

NG

上の方は変数名に半角スペースを挟んでないので変数の定義、参照に成功しました。
下の方は変数名に半角スペースを挟んでいるのでエラーが表示されました
キーワードは使えない
変数名は基本的に自由につけることができますが、以下のキーワードは変数名に使用することはできません。
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield
これらの単語はすでにPythonで別の文法として扱われている単語です。
変数の命名規則
変数名は一部の例外を除き、原則自由につけることができますがあまりにも命名の仕方が人によってことなると、可読性に難が生じます。
そのため、ある一定の規則を定めるケースが殆どです。
命名規則には下記のようなものがあります。
命名規則 | 例 |
パスカルケース(アッパーキャメルケース) | TestVar |
キャメルケース(ローワーキャメルケース) | testVar |
スネークケース | test_var |
ケバブケース | test-var |
Pythonの変数はスネークケースを用いることが多いです。
そのほかにも大文字のIやOは1や0に間違えやすいので使用しない方がよいと思われます。
変数初期化と代入について
変数初期化と参照
<変数名> = <データ>
で変数を初期化することができます。
print(<変数名>)
で<変数名>の変数に格納されているデータを参照し出力することができます。
変数代入
すでに初期化されている変数に対して
<変数名> = <データ>
とすることで変数に格納されている値を変更することができる
例
hoge = 1
hoge = 2
print(hoge) # 2が出力される
代入について
先ほどまでは
<変数名> = <データ>
の形式でしたが
<変数名2> = <変数名1>
のように右辺に変数を持ってきたらどうなるのでしょうか
<変数名1> = <データ>
<変数名2> = <変数名1>
print(<変数名1>) # <データ>が出力される
print(<変数名2>) # <データ>が出力される
このように
<変数名2> = <変数名1>
の時点で<変数名1>に格納されていたデータが<変数名2>に格納される結果となります。
例
hoge = 1
fuga = hoge
print(hoge) # 1が出力される
print(fuga) # 1が出力される
では、ここから<変数名1>に別の値を代入したらどうなるのでしょうか
hoge = 1
fuga = hoge
hoge = 2
print(hoge) # 2が出力される
print(fuga) # 1が出力される
このようにhogeには2が格納されますが、fugaは1のままです。
hoge = 2が行われた瞬間に、メモリ上に新たに変数が確保され、そこに1が代入されます。
PEPとはPython 拡張提案(Python Enhancement Proposal)の略語です。 大きな変更が行われるときは、PEPという文書が書かれて議論されます。
参考