Pythonは進化を続けており、特にPython 3.xのバージョンアップでは多くの新機能が追加され、パフォーマンスや開発効率が向上しています。本記事では、Python 3.xで追加された重要な機能とその実用的な活用法について詳しく解説します。
1. Python 3.9 以降の主な新機能
① 型ヒントの強化(Python 3.9~)
Python 3.5から型ヒント(Type Hints)が導入されましたが、Python 3.9以降でさらなる強化が行われました。
list[str]
,dict[str, int]
などの簡潔な型注釈が可能にfrom __future__ import annotations
を使うことで、型ヒントの評価を遅延実行(実行時のパフォーマンス向上)
使用例
# Python 3.9 以降の型ヒント
def greet(name: str) -> str:
return f"Hello, {name}"
def process_data(data: list[int]) -> dict[str, int]:
return {str(i): i * 2 for i in data}
print(process_data([1, 2, 3]))
型ヒントを活用することで、コードの可読性が向上し、開発時のエラーを防ぐことができます。
② 高速化された辞書のマージと更新(Python 3.9~)
Python 3.9では辞書(dict)をより簡潔にマージ・更新できる演算子|
と|=
が追加されました。
使用例
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}
# マージ(新しい辞書を作成)
merged_dict = dict1 | dict2
print(merged_dict) # {'a': 1, 'b': 3, 'c': 4}
# 更新(元の辞書を変更)
dict1 |= dict2
print(dict1) # {'a': 1, 'b': 3, 'c': 4}
従来の update()
メソッドを使わずとも、簡単に辞書を操作できるようになりました。
③ zoneinfo
モジュールの追加(Python 3.9~)
Python 3.9では zoneinfo
モジュールが追加され、タイムゾーンの管理がより簡単になりました。
使用例
from datetime import datetime
from zoneinfo import ZoneInfo
dt = datetime.now(tz=ZoneInfo("Asia/Tokyo"))
print(dt) # 2025-01-30 12:34:56.789012+09:00
pytz
ライブラリをインストールすることなく、標準でタイムゾーンの処理が可能になりました。
2. Python 3.10 の新機能
① match
文(パターンマッチング)の導入
Python 3.10で match
文が導入され、C言語の switch
文のような構文が使えるようになりました。
使用例
def check_status(code):
match code:
case 200:
return "OK"
case 404:
return "Not Found"
case 500:
return "Server Error"
case _:
return "Unknown"
print(check_status(404)) # Not Found
従来の if-elif
の連続を match
で簡潔に表現できます。
② 構造化パターンマッチ
match
文では、辞書やリストのパターンにもマッチできます。
使用例
def process_data(data):
match data:
case {"name": name, "age": age}:
return f"名前: {name}, 年齢: {age}"
case [x, y, z]:
return f"リスト: {x}, {y}, {z}"
case _:
return "不明なデータ形式"
print(process_data({"name": "Alice", "age": 25})) # 名前: Alice, 年齢: 25
print(process_data([1, 2, 3])) # リスト: 1, 2, 3
オブジェクトの構造に応じた処理をシンプルに記述できるようになりました。
3. Python 3.11 でのパフォーマンス改善
Python 3.11では、Pythonの実行速度が平均 10~60% 向上 しました。
また、型ヒントの強化や例外メッセージの改善が行われました。
① 例外メッセージの改良
エラーメッセージがより分かりやすくなり、バグ修正の際に便利になりました。
例(Python 3.10まで)
TypeError: can only concatenate str (not "int") to str
例(Python 3.11)
TypeError: Can’t concatenate ‘str’ and ‘int’ – perhaps you need to convert the int to str?
「どう修正すべきか」が明示されるようになりました。
4. Python 3.x の新機能の実用例
新しい機能を活かせば、よりシンプルで効率的なコードを書くことができます。
① より直感的な設定データの管理
config = {
"debug": True,
"database": {
"host": "localhost",
"port": 5432
}
}
match config:
case {"debug": True}:
print("デバッグモードが有効です")
case {"database": {"host": host, "port": port}}:
print(f"データベース設定: {host}:{port}")
② match
文を活用したログ分析
logs = [
{"level": "error", "message": "サーバーエラー発生"},
{"level": "warning", "message": "メモリ使用量が高い"},
{"level": "info", "message": "システム起動完了"}
]
for log in logs:
match log:
case {"level": "error", "message": msg}:
print(f"[ERROR] {msg}")
case {"level": "warning", "message": msg}:
print(f"[WARNING] {msg}")
case {"level": "info", "message": msg}:
print(f"[INFO] {msg}")
複数の条件分岐を簡潔に表現できます。
まとめ
Python 3.x では、新機能の追加やパフォーマンス向上が進んでおり、開発の生産性が向上しています。
特に、型ヒントの強化、辞書操作の簡素化、パターンマッチング、例外メッセージの改善 などは、日常的なコーディングをより効率的にする重要な変更点です。
今後もPythonの進化を追いながら、最新の機能を活用してより洗練されたコードを書いていきましょう!