Почему невозможно иметь оператор IF в блоке TRY в Python, и если это возможно, это хорошая практика? - PullRequest
2 голосов
/ 05 января 2012

Я получаю ошибку отступа, но мой код имеет отступ.Если я возьму оператор if, код будет работать нормально.Вот соответствующий фрагмент:

 80     try:
 81         votes_a = breakdown[0]['count']
 82
 83         if breakdown[0]['pick'] != m.home:
 84            votes_b = votes_a
 85     except IndexError:
 86         votes_a = 0.0

Если я уберу строки 83 и 84, код будет работать.Разве невозможно / не желательно иметь управляющие операторы в пределах блоков try / кроме блоков кода Python?

cheers

Обновление: ошибка отступа была не в той строке, которую мне сказал django, это быластрока выше.И да, там была одна вкладка вместо пробела.Спасибо.

Ответы [ 2 ]

8 голосов
/ 05 января 2012

Конечно, это возможно.Если вы получаете ошибки отступов, но визуально отступы выглядят хорошо, есть хороший шанс, что вы перепутаете табуляцию с пробелами.Лучше вообще не использовать вкладки.Вы можете запустить Python с -tt, чтобы обнаружить несогласованное использование вкладок.

3 голосов
/ 05 января 2012
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> breakdown = []
>>> breakdown.append({'count':5, 'pick':0})
>>> abc = 0
>>> try:
...     votes_a = breakdown[0]['count']
...     if breakdown[0]['pick'] != abc:
...             votes_b = votes_a
... except IndexError:
...     votes_a = 0.0
...
>>> print votes_a
5
>>>

Как кажется, сам код в порядке. Вы, должно быть, где-то перепутали пробелы / табуляции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...