2017-02-08 54 views
0

根據PEP 8,這是可以接受的(也是我在過去使用):根據PEP 8正確的換行格式?

result = some_function_that_takes_arguments(
    'a', 'b', 'c', 
    'd', 'e', 'f', 
) 

我的問題是,這是否也適用於函數定義,所以像:

def some_function_that_takes_arguments(
    a, b, c, 
    d, e, f, 
): 
    return a,b,c,d,e,f 

的是我在過去所做的那樣又如:

if (this_is_one_thing 
    and that_is_another_thing 
): 
    do_something() 

我已經做了這樣的一段時間(的一致性我所有的線> 79個關口是這樣分裂),並想知道別人的想法是什麼。

這是很清楚/很好看嗎?這是否符合PEP 8?

+0

很明顯,看看。不瞭解PEP 8一致性。 –

+0

很好! 我更喜歡有更長的行~100個字符,如果它不足以將某些參數放在與'('和下一個相同的行上,那麼該函數可能需要太多的參數。 – Moberg

回答

2

根據PEP8上的這個doc它是。只要縮進級別爲4個空格,就可以將函數聲明分解爲多行。

續行應該對齊纏繞元件進行垂直 使用Python的隱線的內側括號,括號和 括號接合,或使用懸掛縮進[7]。在使用懸掛式縮進時,應考慮以下內容: 在 第一行應該沒有任何爭論,並且應該使用進一步的縮進來清楚地將 區分爲延續線。

是:

# Aligned with opening delimiter. 
foo = long_function_name(var_one, var_two, 
        var_three, var_four) 

# More indentation included to distinguish this from the rest. 
def long_function_name(
    var_one, var_two, var_three, 
    var_four): 
print(var_one) 

# Hanging indents should add a level. 
foo = long_function_name(
var_one, var_two, 
var_three, var_four) 

作爲一個側面說明,如果你發現你的函數簽名是越來越長,由於參數的數目,考慮分手的功能,因此更多的原子單位(秉承乾淨的代碼原理)。

+0

謝謝!關於我的任何意見編輯w/** if if語句? 我傾向於在參數名稱中有些冗長,所以即使我只有2-3個參數,我傾向於跨過79列限制(也許這是我需要更改的東西? ) – wrwlf

+1

https://www.python.org/dev/peps/pep-0008/#multiline-if-statements給出一個閱讀@wrwlf – ospahiu

+0

在附註上,有時我個人喜歡長時間布爾表達式如'is_long_boolean =表達式1和表達式2和表達式3',然後像這樣使用'if is_long_boolean' – ospahiu