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

-> def process_cities(filename):

(Pdb) s

> /Users/williamlubanovic/book/capitals.py(2)process_cities()

-> with open(filename, 'rt') as file:

Введите l (list — «перечислить»), чтобы увидеть следующие несколько строк

своей программы

(Pdb) l

1 def process_cities(filename):

2 -> with open(filename, 'rt') as file:

3 for line in file:

4 line = line.strip()

5 if 'quit' in line.lower():

6 return

7 country, city = line.split(',')

8 city = city.strip()

9 country = country.strip()

10 print(city.title(), country.title(), sep=',')

11

(Pdb)

Стрелка (->) указывает на текущую строку.

Мы могли бы и дальше применять команды s или n в надежде что-то найти, но

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

Точка останова останавливает выполнение программы на указанной вами строке.

В данном случае мы хотим узнать, почему функция process_cities() вызывает за-

вершение программы до прочтения всех введенных строк. Строка 3 (for line in

file:) будет считывать каждую строку входного файла, поэтому она выглядит не-

винно. Единственное место, где мы можем вернуться из функции до прочтения

всех данных, — это строка 6 (return). Поставим точку останова на строке 6:

(Pdb) b 6

Breakpoint 1 at /Users/williamlubanovic/book/capitals.py:6

Далее продолжим выполнение программы до тех пор, пока она либо не достиг-

нет точки останова, либо не завершится обычным образом:

(Pdb) c

Buenos Aires,Argentina

La Paz,Bolivia

Brasilia,Brazil

Santiago,Chile

Отлаживаем с помощью pdb

367

Bogotá,Colombia

> /Users/williamlubanovic/book/capitals.py(6)process_cities()

-> return

Ага, она остановилась на точке останова в строке 6. Это показывает, что про-

грамма хочет завершиться после прочтения страны, которая идет вслед за Колум-

бией. Выведем значение переменной line, чтобы увидеть, что мы только что счи-

тали:

(Pdb) p line

'ecuador,quito'

Что такого особенного… а, забудьте.

Серьезно? Столица называется *quit*o? Наш менеджер не ожидал, что строка