2014-09-08 13 views
2

Недавно я начал работать с Python/Django, и я слышал о соглашениях PEP 8. Прочитав PEP8, я понял, как «стилизовать» мой код, но я изучил программирование на Java, и я использовал только то, что мне нравилось. Не могли бы вы предложить, как включить мой пример в PEP-8? очень признателен.PEP-8 для вызовов функций

result = urllib.urlretrieve(
          "https://secure.gravatar.com/avatar.php?"+ 
          urllib.urlencode({ 
              'gravatar_id': hashlib.md5(email).hexdigest(), 
              'size': srt(size) 
              }) 
          ) 
+4

Этот вопрос, как представляется, не по теме, потому что речь идет о codereview.stackexchange.com –

+0

MHH я думал, что это конкретная проблема программирования, но im new для этого форума, поэтому, я думаю, у вас есть причины, по которым этот поток приостановлен. Во всяком случае, я получил ответы, которые я искал. Большое спасибо. – yamm

+0

Я также смущен вопрос, принадлежит ли вопрос здесь или в codereview или в http://programmers.stackexchange.com/, последний для меня имеет почти идентичную цель, как StackOverflow ... –

ответ

4

Попробуйте загрузить линт кода стиля, такие как pep8 (программа, которая проверяет код, чтобы увидеть, если он соответствует PEP 8 требования) или pylint. Вы можете найти более полный список и сравнение Python шашек стиля здесь: What are the comprehensive lint checkers for Python?

На самом деле, есть pep8 проверки доступны на сайте: http://pep8online.com/

Если запустить свой код через это, он говорит вам:

Code Line Column Text 
E126 2  29  continuation line over-indented for hanging indent 
E225 2  70  missing whitespace around operator 
E126 4  45  continuation line over-indented for hanging indent 
E501 4  80  line too long (90 > 79 characters) 
W292 7  30  no newline at end of file 

исправленная версия кода будет выглядеть следующим образом:

result = urllib.urlretrieve(
    "https://secure.gravatar.com/avatar.php?" + 
    urllib.urlencode({ 
     'gravatar_id': hashlib.md5(email).hexdigest(), 
     'size': srt(size) 
    }) 
) 

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

+0

Удалил мой ответ - как вы избили меня к нему и включал информацию. о контролере ... –

+0

Единственная причина, по которой я использую разрыв строки после вскрытия, потому что линия в противном случае была бы слишком длинной, а затем отступы полностью до исходного столбца не сильно помогают ... – RemcoGerlich

0

Это не может быть предложена PEP8, но для удобства чтения можно разбить его так:

base = "https://secure.gravatar.com/avatar.php?" 
params = urllib.urlencode({'gravatar_id': hashlib.md5(email).hexdigest(), 
          'size': srt(size)}) 
result = urllib.urlretrieve(base+params)  

Обратите внимание, что autopep8 утилита для форматирования кода Python, чтобы соответствовать PEP8. В этом случае, он преобразует исходный код в

result = urllib.urlretrieve(
    "https://secure.gravatar.com/avatar.php?" + 
    urllib.urlencode({ 
    'gravatar_id': hashlib.md5(email).hexdigest(), 
    'size': srt(size) 
    }) 
) 
1

Используйте больше переменных. Не только линии легче читать, полный код легче понять:

base = "https://secure.gravatar.com/avatar.php" 
params = urllib.urlencode({'gravatar_id': hashlib.md5(email).hexdigest(), 
          'size': srt(size)}) 
url = "{}?{}".format(base, params) 
result = urllib.urlretrieve(url) 
Смежные вопросы