変数
変数とは
数学での変数は、$ 2x+3 のような式にある $ x のことになりますが、
プログラム言語での変数は数値や文字列を入れることのできる入れ物で、好きな名前をつけることができます。
ただし変数名として使用できる文字は次のような決まりがあります。
小文字の英字
大文字の英字
数字
アンダースコア
1文字目は数字以外
予約語(if、for、while、defなど)は使えない
for などPythonで制御で使っているような文字列(予約語と呼びます)は変数として使用できません。
Pythonにはif、 for、 class、 import、 def、 print など構文制御や組み込み関数などで使用されている約30の予約語があります。
代入
変数と値を対応づけることを代入といいます。
Pythonでは次のようになります。
code: python
>> x=1
Python ではいろいろな代入方法があります。
code: python
>> x, y=1, 2
>> a = b = 1
イコール記号(=) の前後のスペースはあってもなくなても構いません。
いずれも変数は左側におき、入れる値を右側に書きます。
Python 3.8 から代入式(:=)が導入され、次のような記述ができるようになりました。
code: python
>> b = 10
>> a = b/2
>> a = ( b := 10 ) /2
>> a, b
(5.0, 10)
数値表記でのアンダースコア
code: python
>> a=1,000,000
>> type(a)
<class 'tuple'>
>> a
(1, 0, 0)
>> a=1_000_000
>> type(a)
<class 'int'>
>> a
1000000
変数の参照
変数の中身を使用することを参照と呼びます。
値が代入されていない変数を参照するとエラーになります。
code: python
>> queen
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'queen' is not defined
変数の型
変数に与える値によって次のような型があります。
整数 ( -1 、0、 1 、2、3)
ブール値 (True と False)
浮動小数点数 ( 3.14195 )
文字列 ( 'Hello World!' )
リスト ( [1, 2, 3] )
タプル ( (1, 2, 3) )
辞書 ( {1: 'One', 2:'Two' } )
Python は動的型付け言語で、値の代入時に変数の型が自動的に設定されます。
そのためC言語などのように事前に型宣言をする必要はありません。
また、同じ変数に違った型の値を代入することもできます。
詳細は次のリンクにある公式ドキュメントに従いますが、初心者であればここまでの理解で問題ありません。
変数の型を調べる
プログラム中で変数の型を調べたいようなときは、組み込み関数type()やisinstance()を使います。
code: python
>> x = 12345678 * 23456789
>> x
289589963907942
>> type(x)
<class 'int'>
>> x=3.14
>> type(x)
<class 'float'>
>> isinstance('my string', str)
True
>> isinstance('my string', int)
False
変数名や関数名に気配りをする
変数には見ただけで意味がわかるように名前をつけるべきです。
例えば、平均値を保持する変数に total という文字列を使ったり、タイプが少なくなるというだけの理由でav といった文字列ばかりを使ったコードは読みやいでしょうか?
次のような規則で変数名や関数名を使う可読性がよくなり、
コメント(※)を書かなくてもコードをみるだけで理解できるようなプログラムになります。
変数:全部小文字で単語をアンダースコアで区切る
例:my_variable
定数:全部大文字で単語はアンダースコアで区切る
例:MY_CONSTANT_VARIABLE
Pythonコードのコーディング規約 PEP8 にかかれていますので、一度読んでおくことをおすすめします。 PEP(Python Enhancement Proposal) は、Python を改良する案、リリーススケジュール、コーディングスタイルなど開発を円滑に進めるうえで重要なことを文書にまとめてたものです。
※コメントとはプログラムの動作に全く影響しない書き込みのことです。
Python では # に続けて書き込んだ文字列がコメントになります。
code:python
# This line is commnet!!
a = 1
b = 2
# コメントには日本語も使えます
c = a + b
適切なコメントを書いておくとで後からプログラムを見返した時に何をやっているかがわかりやすくなります。
余談:
コメントは適度な量と内容が大切です。
誤った説明はない方がましですし、冗長すぎるコメントも読んでいて疲弊します。
code: Python に中括弧が不要なのに・・・
foo1();
foo2();
foo3();
アンダースコアだけの変数
慣例的にアンダースコア(_)だけの変数は、無視して構わない変数 として使用されます。実際、メモリを占有しないまま廃棄することができます。
また、PythonのREPL では直前の操作の結果(標準出力)が再表示されます。
code: python
>> a = 1 + 2
>> _
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_' is not defined
>> a
3
>> _
3
>> print(_)
3