Вопрос

Я довольно новый Python, и я хочу разработать свой первый серьезный проект с открытым исходным кодом. Я хочу спросить, что является общим стилем кодирования для проектов Python. Я поставим также то, что я сейчас делаю.

1. - Что является наиболее широко используемым шириной колонны? (Вечный вопрос)
В настоящее время я придерживаюсь 80 столбцов (и это боль!)

2.- Какие цитаты использовать? (Я видел все, и Pep 8 не упоминает ничего чистого)
Я использую отдельные цитаты для всего, кроме Docstrings, которые используют тройные двойные кавычки.

3.- Где я могу положить свой импорт?
Я кладу их в заголовок файла в этот заказ.

import sys
import -rest of python modules needed-

import whatever
import -rest of application modules-

<code here>

4.- Могу ли я использовать «импортировать как угодно. так как бла "?
Я видел некоторые документы, которые игнорируют это.

5.- Вкладки или пробелы для отступов?
В настоящее время используя 4 вкладки пробелов.

6. - Переменная стиль именования? Я использую строчные для всего, кроме классов, которые я положил в камеру.

Все, что вы бы порекомендовали?

Это было полезно?

Решение

Pep 8. в значительной степени «корень» всех общих направляющих стилей.

Google's. Руководство по стилю Python Имеет некоторые части, которые довольно хорошо продуманы, но другие являются характерными (двухместные отступления вместо популярных четырех пространственных, а стиль камеры для функций и методов вместо стиля Camel_Case, являются довольно серьезными идиосинкразями).

На ваши конкретные вопросы:

1. - Что является наиболее широко используемым шириной колонны? (Вечный вопрос) в настоящее время я придерживаюсь 80 столбцов (и это боль!)

80 столбцов наиболее популярны

2.- Какие цитаты использовать? (Я видел все, и Pep 8 не упоминает ничего чистого), я использую отдельные цитаты для всего, кроме Docstrings, которые используют тройные двойные кавычки.

Я предпочитаю стиль, который вы используете, но даже Google не смог достичь консенсуса об этом :-(

3.- Где я могу положить свой импорт? Я кладу их в заголовок файла в этот заказ.

Импорт Sys Import -irest из модулей Python

импортировать любой импорт -рест модулей приложений-

Да, отличный выбор, и популярен тоже.

4.- Могу ли я использовать «импортировать кактущее. Функция как бла»? Я видел некоторые документы, которые игнорируют это.

Я настоятельно рекомендую вам всегда импортировать модули - не специфические имена изнутри модуля. Это не просто стиль - существуют прочные преимущества, например, в поступности в этом. То as Пункт в порядке, чтобы сократить имя модуля или избегать столкновений.

5.- Вкладки или пробелы для отступов? В настоящее время используя 4 вкладки пробелов.

Подавляюще самые популярные.

6. - Переменная стиль именования? Я использую строчные для всего, кроме классов, которые я положил в камеру.

Почти все называют классы заглавными и константами со всеми прописными.

Другие советы

1. У всех нас есть 16: 9 или 16:10 монитор сейчас дней. Даже если у них нет широкого экрана у них много пикселей, 80000000 не являются большим практическим выключателем сделки, как будто именно, когда все взломали в командной строке в удаленном окне удаленного терминала на мониторе 4: 3 320 x 240. Я обычно заканчиваю линию, когда становится слишком длинным, что субъективно. Я нахожусь на 2048 x 1152 на 23 "мониторе x 2.

2.- Одиночные кавычки по умолчанию, поэтому вам не нужно избежать двойных кавычек, двойных кавычек при необходимости встроить отдельные кавычки и тройные цитаты для строк с встроенными новостями.

3.- Положите их в верхнюю часть файла, иногда вы помещаете их в основной Функция, если они не нужны глобально на модуль.

4.- Это обычная идиома для переименования некоторых модулей. Хорошим примером является следующее.

try:
    # for Python 2.6.x
    import json
except ImportError:
    # for previous Pythons
    try:
        import simplejson as json
    except ImportError:
        sys.exit('easy_install simplejson')

Но предпочтительный способ импорта просто класса или функции from module import xxx с необязательным as yyy если нужно

5.- Всегда используйте пробелы! 2 или 4 до тех пор, пока нет вкладок

6.- Классы должны поднять верхнюю кнопку EcseCamelstyle, переменные строчные иногда нижние каркасы или иногда all_lowecase_separed_by_underscores, как и имена функций. «Константы» должны быть all_upper_case_separed_by_underscores

Когда сомневаетесь, обратитесь к Pep 8., Источник Python, существующие конвенции в кодовой базе. Но самые импортные вещи должны быть внутренне последовательный насколько это возможно. Весь код Python должен выглядеть так, как будто он был написан тем же человеком, когда это возможно.

Поскольку я действительно сумасшедший о «стиле», я напишу руководящие принципы, которые я в настоящее время использую в в настоящее время в рамках проекта около 8K SLOC с примерно 35 файлами, большинство из него совпадает с PEP8.

  1. Pep8 говорит 79 (WTF?), Я иду с 80, и я привык к этому сейчас. Меньшее движение глаз ведь!

  2. Docstrings и веща, которые охватывают несколько строк в «». Все остальное в ''. Отказ Кроме того, мне не нравятся двойные кавычки, я использую только одиночные цитаты все время ... Угадай, это потому, что я пришел сформировать угол JavaScript, где это просто просто использовать «», потому что так вам не нужно сбежать HTML вещи: O

  3. На голове, встроенном перед пользовательским приложенным кодом. Но я также езжу с «неудачным ранним» подходом, поэтому, если есть что-то, что версия зависит (например, GTK), я импортирую это первым.

  4. Зависит, боль в большинстве случаев я иду с импортным Foo и из импорта FOO, но там определенные случаи (например, имя уже определено другим импортом), я использовал из Foo Import Biflow, как и BLA.

  5. 4 места. Период. Если вы действительно хотите использовать вкладки, обязательно преобразуйте их в пробелы, прежде чем совершать при работе с SCM. Но никогда (!) Смешайте вкладки и пробелы !!! Это может и введет ужасные ошибки.

  6. uvere_method или foo_function, постоянная, myclass.

Также вы можете спорить о отступе в случаях, когда вызов метода или что-то охватывает несколько строк, и вы можете спорить о том, какой стиль продолжения строки вы будете использовать. Либо окружить все () или сделать \ В конце линии штул. Я делаю последние, и я также размещаю операторы и другие вещи в начале следующей строки.

# always insert a newline after a wrapped one
from bla import foo, test, goo, \
                another_thing

def some_method_thats_too_long_for_80_columns(foo_argument, bar_argument, bla_argument,
                                              baz_argument):

    do_something(test, bla, baz)

    value = 123 * foo + ten \
            - bla

    if test > 20 \
       and x < 4:

        test_something()

    elif foo > 7 \
         and bla == 2 \
         or me == blaaaaaa:

        test_the_megamoth()

Также у меня есть некоторые рекомендации для сравнения операций, я всегда использую is(not) проверить против None True False и я никогда не делаю неявное логическое сравнение, как if foo:, Я всегда делаю if foo is True:, Динамическая печатание приятно, но в некоторых случаях я просто хочу быть уверенным, что вещь делает правильную вещь!

Еще одна вещь, которую я делаю, это никогда не использовать пустые строки! Они в файле констант, в остальной части кода у меня есть такие вещи username == UNSET_USERNAME или label = UNSET_LABEL Это просто более описательный так!

У меня также есть некоторые строгие руководящие принципы пробелов и другие сумасшедшие вещи, но мне это нравится (потому что я без ума от этого), я даже написал сценарий, который проверяет мой код:
http://github.com/bonsaiden/atarashii/blob/master/checkstyle.

Предупреждение (!): Это повредит ваши чувства! Даже больше, чем jslint ...

Но это только мои 2 цента.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top