2017-04-27 41 views
6

Tôi đang cố viết một gợi ý loại :rtype: cho chức năng của trình tạo. Loại nó trả về là gì?Gợi ý kiểu trả về của một hàm máy phát điện là gì?

Ví dụ, nói tôi có chức năng này trong đó sản lượng dây:

def read_text_file(fn): 
    """ 
    Yields the lines of the text file one by one. 
    :param fn: Path of text file to read. 
    :type fn: str 
    :rtype: ???????????????? <======================= what goes here? 
    """ 
    with open(fn, 'rt') as text_file: 
     for line in text_file: 
      yield line 

Kiểu trả về không chỉ là một chuỗi, đó là một số loại iterable của chuỗi? Vì vậy, tôi không thể chỉ viết :rtype: str. Gợi ý đúng là gì?

+0

trả về một máy phát điện với chuỗi –

+0

Hình như bạn không yêu cầu cho một loại gợi ý nhưng chèn docstring cho ': rtype:' –

Trả lời

4
+0

Tôi nghĩ rằng điều này gây ra một lỗi: 'Lỗi Loại: Quá vài thông số để nhập. Trình tạo; thực tế 1, dự kiến ​​3' bởi vì accorig [tài liệu] của nó (https://docs.python.org/3/library/typing.html) 'Generator' mong đợi sản lượng của nó, gửi và trả về các loại (giống như' Generator [ yield_type, send_type, return_type] ') –

3

Các loại chung cho máy phát điện chú thích là Generator[yield_type, send_type, return_type] cung cấp bởi module typing:

def echo_round() -> Generator[int, float, str]: 
    res = yield 
    while res: 
     res = yield round(res) 
    return 'OK' 

Hoặc bạn có thể sử dụng Iterable[YieldType] hoặc Iterator[YieldType].

Các vấn đề liên quan