Pythonには、単に「プログラムが動く」だけでなく、Pythonの設計思想に沿った「明快で、簡潔で、読みやすい」コードの書き方を指す「Pythonic(パイソニック)」という言葉があります。
Pythonの哲学(The Zen of Python)では、「読みやすさは大切だ(Readability counts.)」と説かれています。誰が見ても意図がすぐに伝わる洗練された書き方をマスターすることは、バグを減らし、開発効率を上げるための第一歩です。
今回は、実務ですぐに使えるPythonicなコーディングテクニック10選を、具体的なコード例とともに紹介します
1. 三項演算子(条件式)
if-else文を1行で記述する方法です。冒頭で挙げられた「xxxxx if yes else no」の形式ですね。
# 通常の書き方
score = 85
if score >= 80:
result = "Pass"
else:
result = "Fail"
# Pythonicな書き方
result = "Pass" if score >= 80 else "Fail"2. リスト内包表記
リストの生成とループを1行にまとめます。
# 通常の書き方
squares = []
for i in range(10):
squares.append(i**2)
# Pythonicな書き方
squares = [i**2 for i in range(10)]3. zip関数による複数リストの同時ループ
複数のリストを同時に回したい時、インデックス(i)を使う必要はありません。
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} is {age} years old.")4. enumerate関数でインデックスを取得
ループの中で「今何番目か」を知りたい時に便利です。
colors = ["red", "blue", "green"]
for i, color in enumerate(colors):
print(f"No.{i}: {color}")5. アンパックによる変数の入れ替え
一時的な変数(temp)を使わずに、1行で値を入れ替えられます。
a, b = 10, 20
# 値を入れ替え
a, b = b, a6. get()メソッドによる辞書の安全な値取得
存在しないキーを指定してもエラー(KeyError)にならず、デフォルト値を返せます。
user_info = {"name": "Taro"}
# キーがない場合に "Unknown" を返す
age = user_info.get("age", "Unknown")7. f-strings(フォーマット済み文字列リテラル)
文字列の中に変数を埋め込む最も直感的で高速な方法です。
name = "Python"
version = 3.12
print(f"Welcome to {name} {version}!")8. join()によるリストの結合
文字列のリストを一つの文字列に繋げる際、+で連結するより効率的です。
words = ["Python", "is", "awesome"]
sentence = " ".join(words) # "Python is awesome"9. アンダーバーによる大きな数値の可読性アップ
桁数の多い数値は、_(アンダースコア)で区切ることができます。
# 10億
large_number = 1_000_000_000
print(large_number) # 出力は 100000000010. with構文によるファイル操作
ファイルのクローズ処理(f.close())を自動で行ってくれるため、書き忘れを防げます。
with open("test.txt", "r") as f:
data = f.read()
# ブロックを抜けると自動でクローズされるまとめ:綺麗なコードは効率を生む!!
Pythonのテクニックを駆使することで、コードの行数は減り、プログラムの意図はより明確になります。「Pythonic」なコードを目指して、まずは一つずつ自分のプロジェクトに取り入れてみてください。

コメント