为什么不能在Python的TRY块中使用IF语句,如果可能的话,这是不错的做法?

时间:2012-01-05 03:21:11

标签: python exception-handling

我收到缩进错误,但我的代码缩进正确。如果我取出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 / except的python代码块中是否有可能/可取的控制语句?

欢呼声

更新: 缩进错误不是django告诉我的,这是上面的行。而且,是的,那里有一个标签而不是空格。感谢。

2 个答案:

答案 0 :(得分:8)

当然有可能。如果您收到缩进错误,但缩进在视觉上看起来很好,那么您很可能将制表符与空格混合。最好不要使用制表符。您可以使用-tt运行Python来检测不一致的选项卡使用情况。

答案 1 :(得分:3)

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
>>>

看起来,代码本身很好。你一定搞乱了空格/标签