Python の省略記号オブジェクト
- 記述されていないコードのプレースホルダーとして省略記号を使用する
-
pass
キーワードの代わりに省略記号を使用する -
多次元
numpy
配列のスライスで省略記号を使用する - タイプヒンティングに省略記号を使用する
- まとめ
ベテランの Python 開発者として、Python で 3つのドット ...
省略記号オブジェクトに遭遇したことがあるかもしれません。 これを Python インタープリターで出力しようとすると、省略記号が表示されます。
このチュートリアルでは、Python での省略記号オブジェクトの使用方法を示します。
記述されていないコードのプレースホルダーとして省略記号を使用する
省略記号オブジェクトはさまざまな方法で使用できます。 主に、書かれていないコードのプレースホルダーとして機能します。
チームで作業していて、関数とクラスを定義する必要があるとします。 関数とクラスを定義しますが、コードが不明なため、3つのドット (省略記号) を配置します。
これにより、Python インタープリターが例外を発生させなくなります。
以下のコードを参照してください。
def fun():
...
print("Use of ellipsis.")
出力:
Use of ellipsis.
上記の例は、fun()
メソッドで書かれていないコードのプレースホルダーとして省略記号オブジェクトを配置することを示しています。
pass
キーワードの代わりに省略記号を使用する
pass
キーワードは、コード行を追加したいが何も実行したくない場合に Python で使用されます。 このため、書かれていないコードのプレースホルダーとして使用されます。
説明したように、省略記号オブジェクトを未記述コードのプレースホルダーとして使用できます。 したがって、pass
キーワードの代わりとして使用できます。
これは、次の例で確認できます。
def fun1():
...
def fun2():
pass
print("Use of ellipsis.")
出力:
Use of ellipsis.
上記の例は、2つの関数が pass
と ellipsis を未記述コードのプレースホルダーとして使用していることを示しており、pass
を ellipsis
オブジェクトに置き換えることができることを示しています。
多次元 numpy
配列のスライスで省略記号を使用する
このオブジェクトのもう 1つの重要な用途は、スライスです。
スライシングとは、インデックスに基づいてオブジェクトから要素の一部を抽出する手法を指します。 それは角括弧で行われます。
多次元配列でスライスを実行することもできますが、配列の合計次元に注意する必要があります。 省略記号をスライス式のプレースホルダーとして使用して、特定の次元を無視することができます。
次のコードを検討してください。
import numpy as np
arr = np.array([[7, 5, 2, 3], [1, 8, 9, 2], [3, 2, 1, 0]])
print(arr[:, 2])
print(arr[..., 2])
出力:
[2 9 1]
[2 9 1]
上記の例では、異なるスライス式に対して同じ結果が返されることに注目してください。 スライス式のプレースホルダーとしての省略記号は非常に役立ちます。
式 arr[...,2]
は、2 次元配列の場合は arr[ : ,2]
、3 次元配列の場合は arr[ :, : , 2]
などに変換できます。
タイプヒンティングに省略記号を使用する
Python 3.5 以降では、このシングルトン オブジェクトの別の用途が導入されました。
型ヒントにより、変数、パラメーター、および戻り値の型を宣言できます。 型ヒントで省略記号を使用して、型の一部のみを提供できます。
Tuple[int, ...]
や Callable[...,int]
などのように使用して、型ヒントを補助することができます。
まとめ
結論として、Python の省略記号オブジェクトとその使用法について説明しました。 関数やクラスの未記述コードのプレースホルダーとして一般的に使用されます。
複数の次元を無視するためにスライスのプレースホルダーとして使用することもできます。 Python 3.5 では、型ヒントで省略記号を使用する新しい方法が導入されました。
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn