Как я могу заставить свой код Python остаться под 80 символами строка? [закрытый]

54
задан Dominic Rodger 15 January 2010 в 00:16
поделиться

4 ответа

На этой вики-странице Subversion есть страница, на которой описаны все различные варианты автоматического добавления needs-lock и гарантии того, что он был установлен. На странице также приведены примеры сценариев и сведения о конфигурации:

http://www.orcaware.com/svn/wiki/Automatic_lock-modify-unlock

-121--1653770-

Я не уверен, что возражение против цикла for: в Python нет мультинабора, поэтому вы не можете использовать контейнер builtin, чтобы помочь вам.

Мне кажется, что что-либо на одной линии (если возможно) будет, наверное, по-дружески сложным, чтобы понять. Идите за удобочитаемостью и KISS. Python не C:)

-121--1â609-

Если код, превышающий 80 символов, является вызовом функции (или определением), разорвать строку аргумента. Python распознает скобки, и видит это как одну строку.

function(arg, arg, arg, arg,
         arg, arg, arg...)

Если код, превышающий 80 символов, является строкой кода, которая, естественно, не может быть разрушена, можно использовать обратную косую черту \ для «обхода» новой строки.

some.weird.namespace.thing.that.is.long = ','.join(strings) + \
                                          'another string'

Вы также можете использовать скобки в своих интересах.

some.weird.namespace.thing.that.is.long = (','.join(strings) +
                                           'another string')

Все типы скобок набора {} (dict/set), [] (list), () (кортежей) могут быть разбиты на несколько строк без проблем. Это позволяет лучше форматировать.

mydict = {
    'key': 'value',
    'yes': 'no'
}
22
ответ дан 7 November 2019 в 07:53
поделиться

Мой нынешний редактор (Kate) был настроен для введения линии строки на границах слова, когда длина линии достигает или превышает 80 символов. Это делает его сразу очевидно, что я завышаю границы. Кроме того, существует красная линия, отмечая положение 80 символов, давая мне предупреждение о том, когда линия будет течь. Это позвольте мне планировать логические линии, которые будут соответствовать нескольким физическим линиям.

Что касается того, как на самом деле их соответствовать, есть несколько механизмов. Вы можете завершить линию с \, но это ошибка.

# works
print 4 + \
    2

# doesn't work
print 4 + \ 
    2

Разница? Разница невидима - после обратной косой черта была разница. Упс!

Что должно быть сделано вместо этого? Ну, окружите его в скобках.

print (4 + 
    2)

Нет \ нужно. На самом деле это работает универсально, вам никогда не понадобится \. Даже для атрибутов доступа к границам!

print (foo
    .bar())

Для строк вы можете добавить их явно или неявно использовать соединение C-стиль.

# all of these do exactly the same thing
print ("123"
    "456")
print ("123" + 
    "456")
print "123456"

Наконец, все, что будет в любой форме кронштейна ((), []. {}), Не только в скобках, в частности, может иметь разрыв линии в любом месте. Таким образом, например, вы можете использовать список литерала над несколькими строками просто нормально, так долго, как элементы разделены запятой.

Все это и больше можно найти в официальной документации для Python. Кроме того, быстрая нота, PEP-8 Определяет 79 символов в качестве предела, а не 80--, если у вас есть 80 символов, вы уже через него.

58
ответ дан 7 November 2019 в 07:53
поделиться

Я бы добавил два очка в предыдущие ответы:

Строки могут быть автоматически объединены, что очень удобно:

this_is_a_long_string = ("lkjlkj lkj lkj mlkj mlkj mlkj mlkj mlkj mlkj "
                         "rest of the string: no string addition is necessary!"
                         " You can do it many times!")

Обратите внимание, что это эффективно: это работает не приводит к тому, что соединения строки рассчитаны при запуске кода: вместо этого это напрямую считается одним Длинный строковый литерал, так что это эффективно.

Небольшое предупреждение, связанное с ответом Девина: синтаксис «скобка» на самом деле не «работает повсеместно». Например, D [42] = «H22G» не может быть записан как

(d
 [42] = "H2G2")

, потому что скобки могут быть использованы только вокруг «рассчитанного» выражения (это не включает в себя назначение (=), как указано выше).

Другим примером является следующий код, который генерирует ошибку синтаксиса:

with (open("..... very long file name .....")
      as input_file):

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

В этих случаях можно либо использовать синтаксис «\», либо, лучше (поскольку «\» следует избегать, если это возможно), разделить код по нескольким операторам.

18
ответ дан 7 November 2019 в 07:53
поделиться

Идиоматический Python говорит:

Используйте обратные капли в качестве последнего ресурса

, так что если использование скобок () возможна, избегайте обратной косой черты. Если у вас есть A.train.wreck.that.spans.Across.a.dozen.cars.and-news.lines.across.the.whole.trainyard.and.several.States () Что-то вроде:

lines = a.train.wreck.that.spans.across.a.dozen.cars.and-multiple.lines
lines.across.the.whole.trainyard.and.several.states()

или, желательно, рефакторируйте ваш код. Пожалуйста.

18
ответ дан 7 November 2019 в 07:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: