PEP 484 – Type Hints を読んで「なるほど、こういう使い方もあるのか」と気づかれたのでブログに書いておく。 尚、このエントリの内容を実行するには Python 3 以降が必要となる。
使った Python のバージョンは次の通り。
$ python --version Python 3.6.1
Ellipsis について
Python 3 には Ellipsis というオブジェクトがある。 これはドットを三つ連続させたもので得られる。
>>> ...
Ellipsis
これの使いみちとしてはコンテナオブジェクトでスライスと共に用いられることが多い。 Ellipsis 自体の解説は以前こちらのエントリで紹介している。
任意の処理を示すためのコードについて
ところで、これまで概念的な説明をするときに書くコードも、なるべく実行できるように書くようにしていた。
例えば、関数ならこんな感じで書くことが多かったように思う。
ここには任意の処理が入りますよ、みたいなのを説明するのにはコメントを使って、中身は pass
にするとか。
def f(): # Do something pass
これは、コメントだけだと文法的に正しくないため。
>>> def f(): ... # Do something ... File "<stdin>", line 3 ^ IndentationError: expected an indented block
あるいは docstring を利用して、こんな風にすることもできるかもしれない。
def f(): """Do something"""
docstring は実のところ単なる文字列なので、それが式になることでこの場合は前述したようなエラーにならない。
任意の処理を … (Ellipsis) で表現する
上記でも伝わりさえすれば問題はないんだけど Ellipsis を使えばさらに分かりやすくなる気がする。
def f(): # Do something ...
Ellipsis 単独でもちゃんとした式なので、上記は Python 3 の処理系がちゃんと解釈できる。
あるいは「この変数には何かが入るよ」みたいな処理も Ellipsis で表現できる。
>>> variable = ...
これも variable
に Ellipsis を代入しているだけなので、もちろん有効な Python コードになる。
問題は … が Ellipsis オブジェクトになるのが Python 3 から、っていうところかな。 上記は Python 2 では使うことができない。
スマートPythonプログラミング: Pythonのより良い書き方を学ぶ
- 作者: もみじあめ
- 発売日: 2016/03/12
- メディア: Kindle版
- この商品を含むブログ (1件) を見る