Pythonには、処理を省略したり仮実装したりするためのpass
文とEllipsis
があります。これらはどちらもプレースホルダとして機能しますが、それぞれ異なる目的と文法的な使用法があります。
pass文
pass
はヌル操作(null operation)で、何も実行されません。構文法的には文が必要だが、コードとしては何も実行したくない場合のプレースホルダとして有用です。例えば、未実装関数の仮置きに使えます。
def hoge():
pass
また、処理内で何もしないことを明記したい場合にも活躍します。
try:
hoge + 2
except TypeError:
pass
Ellipsis
一方、Ellipsis
は...
のことで、省略を表すオブジェクトです。pass
と異なり、文ではなく単なる値です。Ellipsis
は、コンテナデータ型の拡張スライス文で使用されると書いてありますが、主にNumpyのことです。
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr[..., 0])
passとEllipsisの使い分け
それぞれの公式ドキュメントの見解とよくある使い方を見てきました。それぞれ以下のような意味合いの違いを感じます。
pass
: 操作としてのイメージEllipsis
: 何かを省略したいイメージ
そのため、下記ようなコメントアウトがあるとありだと感じます。
try:
hoge + 2
except TypeError:
# TODO 後で型エラーについての処理を記載します。
...
この書き方であれば「何か省略されているので今後実装される」ように見えます。また、確定した処理の場合はpass
を使って「何も実行しないことが操作である」ように見せた方が分かりやすいと感じます。
try:
hoge + 2
except TypeError:
pass
未実装関数・クラスにも同様のことが言えます。
# 未実装関数
def hoge():
...
# 未実装class
def Hoge:
...
以上、Pythonのpass
とEllipsis
の使い分けについて解説しました。これらはそれぞれ異なる目的と文法的な使用法があり、適切に使い分けることでコードの可読性を向上させることができます。