簡體   English   中英

用於`chained`函數調用的Python樣式

[英]Python style for `chained` function calls

我們越來越多地使用鏈式函數調用:

value = get_row_data(original_parameters).refine_data(leval=3).transfer_to_style_c()

它可能很長。 要保存代碼中的長行,這是首選?

value = get_row_data(
    original_parameters).refine_data(
    leval=3).transfer_to_style_c()

要么:

value = get_row_data(original_parameters)\
       .refine_data(leval=3)\
       .transfer_to_style_c()

我覺得使用反斜杠\\很好,並將.function放到新行。 這使得每個函數調用都有自己的行,它很容易閱讀。 但這聽起來不是很多人喜歡的。 當代碼發生微妙的錯誤時,當它很難調試時,我總是開始擔心它可能是一個空格或backslash (\\)后面的東西backslash (\\)

引用Python樣式指南:

通過在括號中包裝表達式,可以在多行中分割長行。 這些應該優先使用反斜杠來繼續行。 確保適當縮進續行。 打破二元運算符的首選位置是運算符之后,而不是它之前。

我傾向於選擇以下內容,因為一個左括號,它避開了非推薦的 \\

value = (get_row_data(original_parameters)
         .refine_data(level=3)
         .transfer_to_style_c())

此語法的一個優點是每個方法調用都在其自己的行上。

類似的\\ -less結構對於字符串文字通常也很有用,因此它們不會超出每行限制推薦的79個字符:

message = ("This is a very long"
           " one-line message put on many"
           " source lines.")

這是一個字符串文字,由Python解釋器有效創建(這比求和字符串要好得多,字符串在內存中創建多個字符串並多次復制它們直到獲得最終字符串)。

Python的代碼格式好的。

這個選項怎么樣:

value = get_row_data(original_parameters,
            ).refine_data(leval=3,
                ).transfer_to_style_c()

請注意,如果沒有其他參數,則逗號是多余的,但我保留它們以保持一致性。

不引用我自己的偏好(雖然看到你的問題的評論:))或替代答案是:

堅持你已經完成的任何項目的風格指導 - 如果沒有說明,那么盡可能保持與代碼庫的其余部分一致。

否則,選擇一個你喜歡的風格並堅持下去 - 讓其他人知道你是如何理解鏈接函數調用如果在一行上沒有合理的可讀性(或者你想描述它)的話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM