このScikitの例 のように、スクリプトの先頭でprint(__doc__)
が何をするのかわかりません。
私はグーグルでPython docstringsを探していましたが、__doc__
は関数などのドキュメントを提供するのに役立つようです。しかし、スクリプトの途中で__doc__
が何をするのかわかりません。
__doc__
は、たとえば関数でいくつかのドキュメントを提供するのに役立つようです
これは本当です。機能に加えて、ドキュメントをモジュールで提供することもできます。したがって、次のようなmymodule.py
という名前のファイルがある場合:
"""This is the module docstring."""
def f(x):
"""This is the function docstring."""
return 2 * x
次のようにそのdocstringにアクセスできます。
>>> import mymodule
>>> mymodule.__doc__
'This is the module docstring.'
>>> mymodule.f.__doc__
'This is the function docstring.'
さて、質問に戻ります:print(__doc__)
は何をしますか?簡単に言えば、モジュールのdocstringを出力します。 docstringが指定されていない場合、__doc__
のデフォルトはNone
になります。
文字列リテラルで始まる関数、クラス、またはモジュールには空でない__doc__
があります。その初期文字列はドキュメント文字列として扱われます。そのような文字列が存在しない場合、None
に設定されます。 Python用語集の docstring用語定義 を参照してください。
そのScikitスクリプトの例をダウンロードすると、次のような文字列で始まることがわかります。
"""
================================
Recognizing hand-written digits
================================
An example showing how the scikit-learn can be used to recognize images of
hand-written digits.
This example is commented in the
:ref:`tutorial section of the user manual <introduction>`.
"""
print(__doc__)
コマンドは、スクリプトおよびその他のpythonツール(インタラクティブインタープリターhelp()
関数など)を実行するたびに、ドキュメント文字列を単に再利用して端末に書き込みます。たとえば)同じ値を内省できます。