2011-10-04 23 views
10

有一些標籤在Python文檔字符串,如@param@return,例如:文檔字符串標籤爲「產量」關鍵字

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) 

我可以用什麼來記錄發電機?特地yield關鍵字,如:

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

一個發電機可以'產生'值,它'返回'一個發電機對象。 – agf

回答

7

我認爲@return適合在這種情況下,因爲該函數實際上返回一個迭代器對象與nextsend方法。聲明x = my_generator(from=3)的有效性意味着my_generator確實會返回某些內容。它只是這樣做而不使用return聲明來做到這一點。

在某些方面,包含yield語句或表達式的函數的行爲與類相似,因爲它們是返回具有可預測屬性的對象的工廠。但是,因爲生成器函數本身可以作爲實例方法聲明和調用,所以我不認爲它們是類。