\

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のpassEllipsisの使い分けについて解説しました。これらはそれぞれ異なる目的と文法的な使用法があり、適切に使い分けることでコードの可読性を向上させることができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です