Python 基礎文法:コードの記述ルールと構造をマスターする
Pythonの基礎文法とコード構造を理解することは、効率的でエラーのないプログラムを書くための第一歩です。これは人間の言語における文法や句読点を学ぶのと同じです。これらのルールがなければ、Pythonインタプリタはあなたのコードを理解することができません。
本章では、Pythonコードの記述と組織化を規定する基本ルールをカバーし、より複雑なプログラミング概念を学ぶための土台を築きます。
1. Python 構文の基礎
Pythonの構文(Syntax)は、高い可読性と明快さを実現するために設計されています。
JavaやC++など、セミコロン (;) や波括弧 ({}) に強く依存する他の多くのプログラミング言語とは異なり、Pythonはインデント (Indentation) とキーワード (Keywords) を使用してコードの構造を定義します。
1.1 インデント (Indentation)
Pythonにおいて、インデントは極めて重要です。単にコードを美しく見せるためのものではなく、コードブロック(ループ、条件分岐、関数の内部処理など)を定義するために強制的に使用されます。一貫したインデントは、コードを正しく動作させるための必須条件です。
正しいインデント:
if 5 > 2:
print("5は2より大きいです!") # この行は正しくインデントされています誤ったインデント:
if 5 > 2:
print("5は2より大きいです!") # これは IndentationError (インデントエラー) を引き起こしますこの誤った例では、print 文が if ブロック内で正しくインデントされていないため、プログラムは IndentationError をスローしてクラッシュします。
1.2 コメント (Comments)
コメントはコード内での説明文であり、Pythonインタプリタはこれらを完全に無視します。コメントを追加する目的は、人間(あなた自身やチームのメンバー)がコードを理解しやすくするためです。
- 単行コメント: ハッシュ記号 (#) で始めます。
# これは単行コメントです
print("Hello, world!") # このコメントは前のコードの役割を説明しています- 複数行コメント (ドキュメント文字列 / Docstrings): 3つの連続したシングルクォート (
''') またはダブルクォート (""") で囲みます。これらは通常、関数やクラスの詳細な説明(ドキュメント)を書くために使用されます。
"""
これは複数行コメントです。
複数の行にわたることができ、通常はドキュメント文字列 (docstring) として
関数やモジュールの機能を記述するために使われます。
"""
print("Hello, world!")なぜコメントが重要なのか?
コメントはコードのメンテナンス性やチーム開発において不可欠です。コードの意図、背景にあるロジック、前提条件や制限事項を説明するのに役立ちます。
1.3 キーワード (Keywords)
キーワードは、Pythonにおける予約語(Reserved Words)です。言語の中で特別な意味を持っており、変数名、関数名、その他の識別子として使用することは絶対にできません。
一般的なキーワード:if, else, for, while, def, class, import, return, try, except, and, or, not, True, False など。
例:
# 誤った例:キーワード 'if' を変数名として使おうとする
# if = 10 # これは SyntaxError (構文エラー) を引き起こします
# 正しい例:有効な変数名を使用する
my_variable = 10
print(my_variable)1.4 文 (Statements) と 式 (Expressions)
- 文 (Statement): Pythonインタプリタが実行できる単一の命令です。代入、関数呼び出し、条件分岐、ループなどがこれに当たります。
x = 5 # 代入文
print("Hello") # 関数呼び出し文
if x > 0: # 条件文
print("xは正の数です")- 式 (Expression): 値、変数、演算子、関数呼び出しの組み合わせであり、Pythonが評価(計算)した結果、一つの値を生成するものです。式は通常、文の中に組み込まれて使用されます。
2 + 3 # 算術式、結果は 5
x > 5 # 比較式、結果は True または False
"Hello" + " " + "World" # 文字列結合式、結果は "Hello World"2. Python のコード構造:モジュール、関数、クラス
構造が良く、メンテナンスしやすいコードを書くために、Pythonコードは通常、モジュール (Modules)、関数 (Functions)、クラス (Classes) という単位で組織化されます。
2.1 モジュール (Modules)
モジュールとは、Pythonコードが含まれた .py ファイルのことです。コードを再利用可能な単位に分割するために使用されます。あるモジュールを別のPythonスクリプトにインポート (import) することで、その中で定義された関数やクラスを利用できるようになります。
操作例:
まず、my_module.py という名前のファイルを作成し、以下の内容を記述します。
# ファイル名: my_module.py
def greet(name):
"""渡された名前に挨拶をします。"""
print(f"こんにちは、{name}さん!")
def add(a, b):
"""2つの数字の和を返します。"""
return a + b次に、同じフォルダ内の別のスクリプトからこのモジュールを呼び出します。
# ファイル名: main.py
import my_module
my_module.greet("Alice") # 出力: こんにちは、Aliceさん!
result = my_module.add(5, 3)
print(result) # 出力: 8モジュールを使用するメリット:
- コードの再利用: 同じコードを複数のプロジェクトで使い回せます。
- ロジックの明確化: 巨大なコードベースを管理しやすい論理的なブロックに分割できます。
- 名前空間の分離: 異なるファイル間で同名の変数や関数が衝突するのを防ぎます。
2.2 関数 (Functions)
関数は特定のタスクを実行するコードのブロックです。def キーワードで定義し、後に関数名、丸括弧 ()、コロン : を続けます。関数内部のコードは必ずインデントする必要があります。
def greet(name):
"""この関数は渡された名前に挨拶をします。"""
print(f"こんにちは、{name}さん!")
greet("Bob") # 関数の呼び出し。出力: こんにちは、Bobさん!- 引数 (Parameters): 関数は入力値(上記の例では
name)を受け取ることができます。 - 戻り値 (Return Values): 関数は
return文を使用して、計算結果を呼び出し元に返すことができます。
2.3 クラス (Classes) - オブジェクト指向プログラミングの基礎
クラスはオブジェクト (Objects) を作成するための設計図です。そのクラスのオブジェクトが持つプロパティ(データ)とメソッド(機能)を定義します。class キーワードを使用して定義します。
class Dog:
"""犬を表すシンプルなクラス。"""
def __init__(self, name, breed):
"""名前と犬種を初期化します (これはコンストラクタです)。"""
self.name = name
self.breed = breed
def bark(self):
"""吠える動作をシミュレートします。"""
print("ワンワン!")
# Dog クラスに基づいてオブジェクトを作成 (インスタンス化)
my_dog = Dog("バディ", "ゴールデンレトリバー")
print(my_dog.name) # プロパティにアクセス。出力: バディ
my_dog.bark() # メソッドを呼び出し。出力: ワンワン!3. 実戦総合デモ
これまで学んだ概念を組み合わせて、長方形の面積を計算する Python モジュールを作成してみましょう。
# ファイル名: rectangle_calculator.py
"""このモジュールは長方形の面積を計算する関数を提供します。"""
def calculate_area(length, width):
"""
長方形の面積を計算します。
引数:
length (float): 長方形の長さ。
width (float): 長方形の幅。
戻り値:
float: 長方形の面積。
"""
area = length * width
return area
# これは非常に一般的な Python の構造です:
if __name__ == "__main__":
# このコードブロックは、このスクリプトが「直接実行」された時のみ実行されます。
# 他のファイルからモジュールとして import された場合、この部分はスキップされます。
l = 5.0
w = 10.0
result = calculate_area(l, w)
print(f"この長方形の面積は:{result}")