2017-02-08 9 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

В соответствии с этим doc на PEP8 это так. Прерывание объявления функции в многострочном режиме прекрасное, если уровень отступа равен 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/** ** если ** заявление? Я склонен быть несколько подробным в именах параметров, поэтому, даже если у меня есть только 2-3 параметра, я склоняюсь к пределу 79 колоний (может быть, это то, что мне нужно изменить?) – wrwlf

+1

https://www.python.org/dev/peps/pep-0008/#multiline-if-statements дают сообщение @wrwlf – ospahiu

+0

На стороне заметки, иногда мне лично нравится размещать длинное булево выражение самостоятельно для ясности, т. е. 'is_long_boolean = expression1 и expression2 и выражение 3'. Тогда используйте его так:' if is_long_boolean'. – ospahiu