今回は、Pythonの基本文法とデータ型について見ていきます。
イマドキのプログラミング言語は、C言語やCOBOLなど歴史ある言語の文法とはまったく異なるものとなっています。
プログラムの品質を上げるため、ミスを減らすために、先人たちにより築き上げた厳格なルールが真っ向から否定されている、そんな風に見えてしまう熟練エンジニアの方も、もしかしたらいらっしゃるかもしれません。
ただそれは、Pythonの設計思想が「読みやすく、それでいて効率もよいコードをなるべく簡単に書けるようにする」であるからです。短い記述量で、分かりやすいコードを書くことができる、それがPythonの特徴です。
その点を踏まえて、Pythonの基本文法について考えていけば、それが理にかなっていることが見えてくるかと思います。
Pythonの基本文法
Pythonの基本文法を覚える上で、ここではまず、基本的なルールについて見ていきます。
大文字と小文字は区別される
Pythonでは大文字と小文字は区別されます。例えば、「num」と「Num」はそれぞれ別の変数として扱われます。この点は、他のプログラミング言語と同じです。
文末にセミコロンは付けない
C言語やJavaでは、文の終わりを示す終端記号として、行末に「;(セミコロン)」を付けますが、Pythonでは不要です。
コードブロックはインデントを揃える
if文やfor文などで作るコードブロックは必ずインデントを揃える必要があります。
例えば、C言語やJavaではコードブロックを波括弧({ })を使って定義します。
for(i = 0; i < 5; i++){ printf("%d回目, i); }
Pythonではそのような単語で囲うことはせず、コロン(:)とインデントで定義します。
for i in range(10): print(i)
インデントはタブではなく、半角スペース4つとするのが一般的です。ただし、スペースの数が統一されていれば1つのブロックとしてみなされるので、4つにこだわる必要はありません。
他のプログラミング言語とPythonの文法の最大の特異点は、この、コードブロックをコロンとインデントで表す点です。初めのうちはなかなか慣れないかもしれません。ただ、何度もコードを書くことで自然と慣れてくると思います。
データ型を理解しよう
Pythonでは、変数を宣言する際、データ型を指定する必要はありません。
「指定する必要はない」というのは、「データ型が存在しない」というわけではありません。動的型付けによって、型が自動的に判別されてます。
以下のサンプルを見てください。
msg = "こんにちは" num = 100
変数「msg」は”こんにちは”という文字列を代入しており、変数「num」には数字の100を代入しています。
Pythonでは、変数に値が代入される際、内部で適切なデータ型を自動的に判別してくれます。上記例では、変数「msg」は文字列型、変数「num」は整数型になります。
Pythonで扱えるデータ型
では、Pythonにはどのようなデータ型があるのでしょうか。Pythonで扱える代表的なデータ型について見ていきます。
データ型はプログラミング言語によって、同じようで微妙に異なる部分もあるので、Pythonを始めるにあたり、どんなものが存在するのか把握しておきましょう。
整数型
整数型は、C言語やJavaで言うint型のことです。
num = 1
この型はほぼ全てのプログラミング言語にも存在する、最も基本的なものです。
文字列型
文字列型は、その名の通り、文字列を格納する変数です。他の言語で言うstring型にあたります。
str1 = "こんにちは、Python"
文字列はシングルクォートかダブルクォートで値を囲みます。囲うクォートの違いは特にないため、シングルでもダブルでもどちらを使っても良いです。
改行を含む文字列を格納することもできます。その場合は、シングルクォート3つか ダブルクォート3つで囲みます。
str2 = '''ようこそ Pythonの 世界へ'''
リスト型
リストは複数の要素をまとめて扱うためのデータ型です。他の言語で言う「配列」にあたります。
リスト型の特徴は、要素が順番に並んでいる点です。
list1 = [1,2,3,4,5] list2 = [1, "ようこそ", 2, "Python"]
リスト型のデータは角括弧([ ])の中に値をカンマで区切って宣言します。
上記サンプルの「list1」と「list2」は両方ともリスト型変数です。
list1の要素はすべて整数型に統一されていますが、list2のように、含める値の方は一致している必要はありません。
要素の順番に処理できるため、forループの繰り返し処理などで便利です。
ここでは割愛しますが、リスト型にはinsertやsortなど便利なメソッドが用意されています。
タプル型
タプル型は、リスト型と同じで、複数の要素をまとめて扱うためのデータ型です。
リスト型との違いは、要素の内容を変更できない点です。
tuple1 = (1,2,3,4,5) tuple2 = (1, "ようこそ", 2, "Python")
タプル型のデータは丸括弧の中に値をカンマで区切って宣言します。
リスト型と同じく、含める値の型は一致している必要はありません。
なお、タプル型はリスト型と違ってメソッドは持ちません。
辞書型
辞書型は複数の要素を「キー」と「値」の組み合わせて管理するデータ型です。他の言語で言う「連想配列」や「ハッシュ」にあたります。
dict1 = {1:'aaa', 2:'bbb', 3:'ccc'}
辞書型のデータは波括弧({ })の中に「キー」と「値」をコロン(:)で分けて、それらをセットにした要素をカンマで区切って宣言します。
各要素へは対象のキー名を指定してアクセスします。
辞書型の利用頻度は高いので覚えておきましょう。
集合型
集合型はタプル型やリスト型のように複数の要素をまとめて扱いますが、要素は順番を持ちません。
また、集合型には「重複した要素を持たない」という特徴があります。
set1 = {1,2,3,3,'hoge','hoge'} set2 = set([1,2,3,3,'hoge','hoge'])
集合型のデータは波括弧({ })の中に値をカンマで区切って指定するか、「set」関数を用いて作成します。「set」関数を用いる場合は、( )の中に[ ]を含み、その中に要素をカンマで区切って宣言します。
集合型の要素は重複を持たないので、3や’hoge’のように重複している要素は自動的に削除されます。
なお、集合型はタプル型やリスト型のような順序を持たず、かつ、辞書型のような「要素のキー」を持たないため、特定の要素へアクセスするということはできません。
では、どのように使うのか。それは長くなるので ここでは割愛しますが、主に集合演算で使われます。
まとめ
今回は、Pythonの基本文法とデータ型について見てきました。
インデントが文法のルールに含まれるなど、これまでの言語にはない特徴がありますが、この辺りは意外とすぐ慣れると思います。
データ型については、よく使われるものを選定して紹介しましたが、他にも浮動小数点型や論理型などもあります。それらについては、追々覚えていけば良いです。
次回は、if文やfor文といった制御構文について見ていきます。Pythonの基本文法も、そこで併せて確認していきましょう。