2011-10-04 5 views
10

'yield'キーワードのDocstringタグ

@returnのような、pythonでdocstringのタグがいくつかあります。例えば:

def my_method(a_param): 
    ''' @param a_param: Description of this param 
     @return: The return value of the method 
    ''' 
    return int(a_param) * (other or 1) 

ジェネレータの文書化には何が使えますか?

def my_generator(from=0): 
    ''' @param from: The initial value 
     @yield: A lot of values 
    ''' 
    yield a_value 

@return an iteratorはここで使用できると理解していますが、ジェネレータも値を返すことができるため、正しいかどうかわかりません。

ありがとう。

+6

私が知る限り、これらのタグはサードパーティのツールで使用されており、Python自体では使用されていません。 – Daenyth

+2

ジェネレータは値を 'yield 'することができ、ジェネレータオブジェクトを'返す'。 – agf

答えて

7

nextまたはsendメソッドを持つイテレータオブジェクトが実際に返されるため、この場合は@returnが適切とみなされます。ステートメントx = my_generator(from=3)の妥当性は、my_generatorが本当に何かを返すことを意味します。これを行うには、returnステートメントを使用せずに行うだけです。

yieldステートメントまたは式を含む関数は、予測可能なプロパティを持つオブジェクトを返すファクトリであるため、いくつかの点でクラスのように動作します。しかし、ジェネレータ関数自体はインスタンスメソッドとして宣言して呼び出すことができるので、クラスとして考えることはできません。

関連する問題