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) - 論理型:
True/False(boolクラスのインスタンス) - 文字列型:
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歳です。'
制御構造の実装
条件分岐にはif・elif・elseブロックを使い、ループには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}は素数です。")
forやwhileのelse節は、ループが正常終了(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を含むディレクトリで構成され、階層的な名前空間を提供します。