Правильный отступ для второй строки многострочного кода в круглых скобках

Каков рекомендуемый стандартный отступ для второй строки многострочного кода Python с помощью скобок / запятых?

  1. Без отступа:

    plt.imshow(np.transpose(Z), extent=[0,4.2,0,48000], cmap='jet',
    vmin=-100, vmax=0, origin='lowest', aspect='auto')
    
  2. Отступ в 4 пробела:

    plt.imshow(np.transpose(Z), extent=[0,4.2,0,48000], cmap='jet',
        vmin=-100, vmax=0, origin='lowest', aspect='auto')
    
  3. Идентификация до (:

    plt.imshow(np.transpose(Z), extent=[0,4.2,0,48000], cmap='jet',
               vmin=-100, vmax=0, origin='lowest', aspect='auto')
    
  4. Другое решение?

Это связано: Правильный отступ для многострочных строк Python, но здесь вопрос специфический сделать многострочными скобками / запятыми, а не строками.


person Basj    schedule 03.08.2018    source источник
comment
Вы можете опубликовать это как ответ @FHTMitchell? (Я не знал этого правила 8-ми пробелов!)   -  person Basj    schedule 03.08.2018


Ответы (2)


Если вы следуете PEP8, Indentation, то я бы выбрал вариант 3 :

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

Мне лично очень нравится этот вариант, так как он позволяет легче читать мне и другим. Но если вы работаете в компании, обязательно ознакомьтесь со стандартами компании (у каждой компании могут быть свои предпочтения).

person Ely Fialkoff    schedule 03.08.2018
comment
Перейдите к части макета кода по этой ссылке: legacy.python.org/dev/peps / pep-0008 и проверьте # Aligned with opening delimiter. - person Sheldore; 03.08.2018
comment
@Bazingaa ты прав! Я включил его в ответ для полноты картины. - person Basj; 03.08.2018

Я бы никогда не использовал варианты 1 или 2, они могут ввести в заблуждение. 3 - это хорошо, если у вас достаточно места.

Есть еще один вариант, который можно использовать, когда вариант 3 оставляет слишком мало места или при разделении строк с помощью обратной косой черты (в последнем случае это используется по умолчанию в PyCharm), два уровня отступа (8 пробелов):

plt.imshow(np.transpose(Z), extent=[0,4.2,0,48000], cmap='jet',
        vmin=-100, vmax=0, origin='lowest', aspect='auto')

def grouper_with_prev(iterable: _Iin[_T], n: int, include_first: bool = False) \
        -> _Iout[_t.Tuple[_T, ...]]:
    """
    Returns n size chuncks of iterable with the previous n-1 elements

    """
    ...

Здесь нет путаницы с вариантами 1 и 2, что делает очевидным то, что вы делаете.

person FHTMitchell    schedule 03.08.2018
comment
Соглашаться. 3 выглядит лучше всего, но иногда нет места. - person bfris; 03.08.2018