0

让我用一些演示代码来解释问题:

 def my_func:
    if not a:
        #operations A here.
    try:
        #operations B here. 
    except:
        #operations C here.

这里的问题是 try-except 子句似乎包含在 if 语句中。只有当“not a”为真时,try-except 子句语句才会被执行,否则它们永远不会被执行。

我尝试在 try-except 子句之前缩小一些缩进空间,如下所示:

def my_func:
    if not a:
        #operations A here.
try:
    #operations B here. 
except:
    #operations C here.

现在一切似乎都可以正常工作,因为 try-except 是使用 if 语句独立执行的。

任何解释都非常感谢。

4

1 回答 1

1

您在缩进中混合了制表符和空格,这导致解释器误解了缩进级别,认为try是更高的级别:

>>> if True:
...     if True:   # indentation with 4 spaces. Any number will do
...     a = 1      # indentation with a tab. Equals two indents with spaces
...     else:      # indentation with 4 spaces
...     a = 2
... 
>>> a   # as if the "a = 1" was inside the second if
1

要检查这是否是问题,请启动程序python -tt,如果发现混合的制表符和空格,则会引发错误。另请注意,使用 python3 时,它会自动运行该-tt选项,不允许混合制表符和空格。

于 2013-11-14T20:10:56.213 回答