2015-03-23 22 views
8

Tôi đang cố gắng sử dụng kiểu mã Google để ghi lại một hàm mà sau đó tôi sử dụng nhân sư với phần mở rộng napoleon để tạo tài liệu cho. Hàm này không bình thường trong đó trả về hai đối số. Tôi không nghĩ Napoleon xử lý chuyện này. Nếu vậy, ai đó có thể cho tôi biết cách họ xử lý nó?Chức năng tài liệu nhân vật napoleon có thể trả về nhiều đối số không?

def foo(a): 
'''one line summary 

longer explanation 

Args: 
    a (int): parameter description 

Returns: 
    servers (list): list of servers to use 
    msg (str): logging message string 
''' 
pass 

Có thể tôi nhận được thông báo rằng đây không phải là kiểu mã hóa tuyệt vời để trả lại nhiều đối số, nhưng bạn có thể làm điều này không? Html tạo ra xử lý hai dòng như là một phần của một mô tả cho một đối số. Nếu tôi đặt một dòng mới giữa các máy chủ và dòng msg, nó sẽ giúp, nhưng nó vẫn là tài liệu một arg.

Trả lời

14

Python chỉ trả về một đối tượng. Nếu bạn gọi

serv,msg = foo(myinput) 

Sau đó, bạn đang mở rộng một cách rõ ràng tuple expression_list được tạo ra khi hàm trả về với mã này

return servers,msg 

Bạn docstring nên đọc một số điều như thế này (với Napoleon Google Style)

""" 
one line summary 

longer explanation 

Args: 
    a (int): parameter description 

Returns: 
    (tuple): tuple containing: 

     servers(list) servers to use 
     msg (str): logging message string 
""" 

Hoặc với Napoleon NumPy phong cách:

""" 
one line summary 

longer explanation 

Parameters 
---------- 
a : int 
    parameter description 

Returns 
------- 
servers : list 
    servers to use 
msg : str 
    logging message string 
""" 

Có xem xét các tài liệu python cho return và có lẽ expression_list

+1

Tôi không chắc chắn đó là những gì OP đề cập đến, nhưng nếu bạn có một hàm như 'if foo: return foo else: return bar'? – Railslide

+0

vâng nó mơ hồ. OP nên đăng một số mã để làm rõ nó – mor22

+0

Cảm ơn! Đó là những gì tôi đang tìm kiếm, và nó có ý nghĩa, có lẽ tốt để ghi lại kiểu trả về như tuple thay vì nhảy ngay vào phần mô tả các phần tử tuple như tôi đã nghĩ, nhưng tôi hoàn toàn không hiểu để làm việc (hiện tại tôi có rất ít kinh nghiệm với nhân sư). Hai dòng mô tả các máy chủ và msg bắt đầu trên một dòng mới thụt vào, nhưng không có phân tích cú pháp của các dòng, chúng được coi là một đoạn. Tôi có thể lấy nhân sư/napoleon để giới thiệu cùng một loại định dạng mà nó áp dụng cho các tham số Args cho các phần tử tuple không? – MrCartoonology

7

Google phong cách không hỗ trợ nhiều giá trị trả về. Để giải quyết sự cố, bạn có thể sử dụng:

Returns: 
     2-element tuple containing 

     - **rates** (*array*): the unnormalized rates (just the sum of the 
      exponential kernels). To obtain rates in Hz divide the 
      array by `2*tau` (or other conventional `x*tau` duration). 
     - **nph** (*array*): number of photons in -5*tau..5*tau window 
      for each timestamp. Proportional to the rate computed 
      with KDE and rectangular kernel. 

Kết quả này cho ra kết quả tốt ngay cả với mô tả nhiều dòng cho từng mục được trả về.

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