Python=の関数は、フレキシブルタイプの引数を受け入れる場合があります。または、フレキシブルタイプの値を返す場合があります。今、そのような関数の良い例を思い出せません。したがって、以下のおもちゃの例で、そのような関数がどのように見えるかを示しています。
Sphinxドキュメンテーション表記を使用して、そのような関数のdocstringsを記述する方法を知りたいです。以下の例では、引数はstr
またはint
のいずれかです。同様に、str
またはint
を返す場合があります。
Docstringsの例を示しました(デフォルトのSphinx表記と、Sphinxのナポレオン拡張によって理解されるGoogle表記の両方で)。これがフレキシブルタイプを文書化する正しい方法かどうかはわかりません。
Sphinxのデフォルト表記:
def add(a, b):
"""Add numbers or concatenate strings.
:param int/str a: String or integer to be added
:param int/str b: String or integer to be added
:return: Result
:rtype: int/str
"""
pass
スフィンクスナポレオンGoogle表記:
def add2(a, b):
"""Add numbers or concatenate strings.
Args:
a (int/str): String or integer to be added
b (int/str): String or integer to be added
Returns:
int/str: Result
"""
pass
Sphinxで処理されることを意図したdocstringsでパラメーターまたは戻り値の複数の型を表現する正しい方法は何ですか?
Python 3.5 Union
タイプのヒント
https://docs.python.org/3/library/typing.html#typing.Union
現時点では、そのモジュールとまったく同じ構文を使用することをお勧めします。
例:
def f(int_or_float):
"""
:type int_or_float: Union[int, float]
:rtype: float
"""
return int_or_float + 1.0
次に、3.5がある場合は、次のように記述します。
def f(list_of_int : Union[int, float]) -> float:
return int_or_float + 1.0
ドキュメント生成サポートはすでにあると思いますが、まだテストしていません: https://github.com/sphinx-doc/sphinx/issues/1968