Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 274

добавить команды print(). Read-Evaluate-Print Loop (REPL) интерактивного ин-

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

ко в производственном коде выражения print() использовать не стоит, поэтому

вам нужно помнить о том, что следует удалять их. К тому же ошибки, связанные

с копированием и вставкой, сделать очень легко.

pylint, pyflakes и PEP-8

Следующим шагом перед созданием настоящих программ для тестирования явля-

ется использование контролера кода Python. Самыми популярными являются

Тестируем код

353

pylint (http://www.pylint.org/) и pyflakes (http://bit.ly/pyflakes). Вы можете установить

любой из них (или даже оба) с помощью pip:

$ pip install pylint

$ pip install pyflakes

Они проверяют на наличие реальных ошибок в коде (например, обращения

к переменной до присвоения ей значения) и несоответствие стилю (как если бы

код носил одновременно одежду в полоску и в клетку). Рассмотрим практически

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

a = 1

b = 2

print(a)

print(b)

print(c)

Так выглядит выходная информация от pylint:

$ pylint style1.py

No config file found, using default configuration

************* Module style1

C: 1,0: Missing docstring

C: 1,0: Invalid name "a" for type constant

(should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)

C: 2,0: Invalid name "b" for type constant

(should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)

E: 5,6: Undefined variable 'c'

Если пролистать дальше, к разделу Global evaluation, можно увидеть наш счет

(10.0 — это высший балл):

Your code has been rated at -3.33/10

Ой! Сначала исправим ошибку. Строка вывода pylint, которая начинается с E,

указывает на то, что найдена ошибка, которая заключается в том, что мы не при-

своили значение переменной с до ее вывода на экран. Давайте это исправим:

a = 1

b = 2

c = 3

print(a)

print(b)

print(c)

$ pylint style2.py

No config file found, using default configuration

************* Module style2

C: 1,0: Missing docstring

C: 1,0: Invalid name "a" for type constant