Python 入門

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}")