Ответ 1
Поскольку ваш код не содержится в классе или функции, он ожидает, что эти переменные будут constants, и как таковые они должны быть прописными.
Вы можете прочитать PEP8 для получения дополнительной информации.
Я сделал простой python script для публикации данных на веб-сайте.
#Imports
url_to_short = sys.argv[1]
post_url = 'https://www.googleapis.com/urlshortener/v1/url'
headers = {'Content-Type': 'application/json'}
data = {'longUrl': url_to_short}
post_data = json.dumps(data)
req = urllib2.Request(post_url, post_data, headers)
resp = urllib2.urlopen(req)
if resp.getcode() == 200:
content = json.loads(resp.read())
#Other stuff
Теперь я подумал, что давайте проверим мой script для стандартов кодирования с помощью инструмента pylint
.
Мой pylint
вывод выглядит следующим образом:
************* Module post
C: 1,0: Missing docstring
C: 6,0: Invalid name "url_to_short" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C: 8,0: Invalid name "post_url" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C: 9,0: Invalid name "headers" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
# Other stuff
Теперь, мой вопрос, почему pylint
показывает мои имена переменных как Invalid name
. Является ли именование переменной таким образом неправильным соглашением о кодировании.
Поскольку ваш код не содержится в классе или функции, он ожидает, что эти переменные будут constants, и как таковые они должны быть прописными.
Вы можете прочитать PEP8 для получения дополнительной информации.
РЕДАКТОР: Как уже отмечали другие, pylint ожидает, что глобальные переменные должны быть ВЕРХНИЙ. Если предупреждения действительно вас беспокоят, вы можете обойти их, обернув небольшие фрагменты, подобные этому, в main()
-функции, а затем используйте if __name__ == "__main__"
-convention. Или, если вам интересно, вы можете изменить регулярные выражения, используемые pylint для проверки имен переменных.
От разработчиков от Pylint.
В этом случае Пилинт говорит мне, что эти переменные кажутся константами и должны быть все ВЕРХНИЙ. Это правило на самом деле является соглашением об именах, которое характерно для людей в Logilab, которые создали Pylint. Именно так они назвали эти переменные. Вы также можете создавать собственные собственные соглашения об именах, но для целей этого урока мы хотим придерживаться стандарта PEP-8. В этом случае объявленные переменные должны соответствовать стандарту всех строчных букв. Соответствующее правило будет выглядеть примерно так: "должно соответствовать [a-z _] [a-z0-9 _] {2,30} $". Обратите внимание на строчные буквы в регулярном выражении (a-z по сравнению с A-Z)
Вы можете протестировать его, выполнив:
pylint --const-rgx='[a-z_][a-z0-9_]{2,30}$' x.py
Это потому, что url_to_short
объявляется в глобальном пространстве имен, а pylint требует, чтобы глобальные переменные (например, константы) назывались ALL_UPPERCASE
.
Поэтому он проверяет, соответствует ли ваше имя переменной регулярному выражению, используемому для глобальных переменных: (([A-Z_][A-Z0-9_]*)|(__.*__))$
(обратите внимание на диапазоны A-Z
). Следовательно, ошибка Invalid name
.