Pythonプログラミング入門:構文・データ型・制御構造の実践的解説

Pythonは、明確さと可読性を重視した高水準言語です。その設計哲学は「シンプルであるべき」「明示的であるべき」という原則に基づき、学習者にとって親しみやすく、プロダクション環境でも広く採用されています。

対話型インタープリタの活用

コマンドラインからpythonを起動すると、対話モード(REPL)に入り、「>>>」プロンプトが表示されます。この環境では即時実行・検証が可能で、学習に最適です。

>>> 42 * 2
84
>>> _
84
>>> _ + 16
100

下線記号_は直前の評価結果を参照します。終了にはexit()またはCtrl+Z(Windows)/Ctrl+D(macOS/Linux)を使用します。

出力とヘルプ機能

print()関数は、複数の引数を受け付け、柔軟なフォーマットを提供します。

>>> print("Python", "3.12", sep=" v", end="!\n")
Python v3.12!

キーワード引数sep(区切り文字)、end(終端文字)、file(出力先ストリーム)、flush(バッファフラッシュ制御)により、標準出力以外への書き出しも可能です。

不明な関数や構文の仕様を調べるにはhelp()が有効です。

>>> help(len)

基本データ型とリテラル表現

Pythonでは、型宣言不要で値そのものが型情報を内包します。

  • 数値型int(任意精度整数)、float(倍精度浮動小数点)、complex(例:2+3j
  • 論理型TrueFalseboolクラスのインスタンス)
  • 文字列型str(Unicode対応)。シングル・ダブル・トリプルクォートで定義可能。トリプルクォートは改行を含むマルチライン文字列に利用。
  • 特殊値None(空値を表す唯一のNoneTypeオブジェクト)

進数表記もサポートされ、0b1010(2進)、0o755(8進)、0xFF(16進)のように記述できます。

変数とオブジェクト識別

変数はオブジェクトへの参照であり、id()でメモリアドレスを確認できます。特に小整数(-5〜256)はインターン化され、同一値の変数が同じIDを持つことがあります。

>>> a = 100
>>> b = 100
>>> id(a) == id(b)
True

del文で参照を削除しても、他の変数が同じオブジェクトを参照していれば、そのオブジェクトは生存し続けます。

演算子と型の相互作用

算術演算子は型に応じて多義的に動作します。たとえば+は数値加算と文字列結合の両方を意味し、*は乗算とシーケンスの繰り返しを担います。

>>> 3 * "py"
'pypypy'
>>> [1, 2] * 3
[1, 2, 1, 2, 1, 2]

除算系演算子では、/(真の除算)、//(切り捨て除算)、%(剰余)が厳密に区別されます。負数の剰余計算は、除数と同じ符号を保つよう定義されています。

型変換と組み込み関数

type()で型を確認し、int()float()str()などで明示的な変換が可能です。また、divmod()は商と剰余を同時に返し、pow(base, exp, mod)はモジュラーべき乗を効率的に計算します。

>>> divmod(17, 5)
(3, 2)
>>> pow(2, 10, 1000)  # (2^10) % 1000
24

入力とフォーマット出力

input()は常に文字列を返すため、数値処理には明示的な変換が必要です。一方、f-string(Python 3.6+)は簡潔かつ高速な文字列フォーマット手法です。

>>> name = input("名前を入力: ")
名前を入力: 山田太郎
>>> age = int(input("年齢を入力: "))
年齢を入力: 28
>>> f"{name}さんは{age}歳です。"
'山田太郎さんは28歳です。'

制御構造の実装

条件分岐にはifelifelseブロックを使い、ループにはwhile(条件反復)とfor(イテレータ駆動)があります。

# 質数判定(for + else構文)
n = int(input("正の整数を入力: "))
for divisor in range(2, int(n**0.5) + 1):
    if n % divisor == 0:
        print(f"{n}は合成数です。")
        break
else:
    print(f"{n}は素数です。")

forwhileelse節は、ループが正常終了(breakなし)時にのみ実行されます。

関数の定義と活用

関数はdefキーワードで定義され、ドキュメンテーション文字列(docstring)で意図を明記するのが推奨されます。

def calculate_area(length: float, width: float) -> float:
    """長方形の面積を計算する。
    
    Args:
        length: 長さ(単位:m)
        width: 幅(単位:m)
        
    Returns:
        面積(単位:m²)
    """
    return length * width

デフォルト引数、キーワード引数、可変長引数(*args, **kwargs)により、柔軟なインターフェース設計が可能です。

データ構造の操作

Pythonの主要なコンテナ型は以下の通りです:

  • リスト:可変長、順序付き、ミュータブル
  • タプル:不変、順序付き、ハッシュ可能(辞書のキーに利用可)
  • 辞書:キー・バリューの連想配列、挿入順序保持(Python 3.7+)
  • 集合:重複排除、集合演算(和・積・差)対応

スライス表記([start:end:step])は、これらのシーケンス型で共通して利用でき、部分抽出や逆順取得にも対応します。

>>> data = [0, 1, 2, 3, 4, 5]
>>> data[1:4]
[1, 2, 3]
>>> data[::-1]
[5, 4, 3, 2, 1, 0]

モジュールとパッケージの管理

コードの再利用性を高めるには、関数を.pyファイルにまとめ、import文で読み込みます。

# math_utils.py
def gcd(a: int, b: int) -> int:
    while b:
        a, b = b, a % b
    return a

# main.py
from math_utils import gcd
print(gcd(48, 18))  # → 6

パッケージは__init__.pyを含むディレクトリで構成され、階層的な名前空間を提供します。

タグ: Python programming datatypes control-flow functions

7月30日 05:53 投稿