2011-10-04 12 views
10

Có một số thẻ cho docstrings trong python, như @param@return, ví dụ:docstring thẻ cho 'năng suất' từ khóa

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) 

tôi có thể sử dụng gì đối với tài liệu máy phát điện? đặc biệt các yield từ khóa, như:

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

Tôi hiểu rằng @return an iterator có thể được sử dụng ở đây, nhưng tôi không biết nếu nó là đúng vì một máy phát điện có thể trở về giá trị cũng có.

Cảm ơn.

+6

Theo như tôi biết, các thẻ đó được sử dụng bởi các công cụ của bên thứ ba và không phải bất kỳ thứ gì trong chính python. – Daenyth

+2

Một máy phát có thể có các giá trị 'yield', nó' trả về 'một đối tượng máy phát điện. – agf

Trả lời

7

Tôi sẽ xem xét @return để phù hợp trong trường hợp này vì hàm thực sự trả về đối tượng trình lặp với phương thức next hoặc send. Giá trị của câu lệnh x = my_generator(from=3) ngụ ý rằng my_generator thực sự trả về một cái gì đó. Nó chỉ làm như vậy mà không cần sử dụng câu lệnh return để làm điều đó.

Trong một số cách, các hàm có chứa câu lệnh hoặc biểu thức yield hoạt động giống như các lớp, vì chúng là các nhà máy trả về các đối tượng có các thuộc tính có thể dự đoán được. Tuy nhiên, bởi vì các hàm máy phát có thể được khai báo và gọi như các phương thức mẫu, nên tôi không nghĩ chúng là các lớp.