Python 与if语句冲突相邻的Try except子句

Python 与if语句冲突相邻的Try except子句,python,exception,if-statement,exception-handling,try-catch,Python,Exception,If Statement,Exception Handling,Try Catch,让我解释一些演示代码的问题: def my_func: if not a: #operations A here. try: #operations B here. except: #operations C here. 这里的问题是try-except子句似乎包含在if语句中。只有当“nota”为True时,才会执行try-except子句语句,否则永远不会执行它们 我尝试在try之前收缩一些缩进空间,但try子句除

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

 def my_func:
    if not a:
        #operations A here.
    try:
        #operations B here. 
    except:
        #operations C here.
这里的问题是try-except子句似乎包含在if语句中。只有当“nota”为True时,才会执行try-except子句语句,否则永远不会执行它们

我尝试在try之前收缩一些缩进空间,但try子句除外,如下所示:

def my_func:
    if not a:
        #operations A here.
try:
    #operations B here. 
except:
    #operations C here.
现在,一切似乎都像try一样工作,除了使用if语句独立执行之外


非常感谢您的解释。

您在缩进中混合了制表符和空格,这会导致口译员误解缩进级别,认为
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
选项运行,不允许混合制表符和空格。

示例中的缩进看起来是正确的。你应该给我们看一些真实的代码。你可能有混合的制表符和空格,这会让解释器认为缩进是不同的。请尝试使用
python-tt
运行程序,python可能会抱怨标签和空格的混合。在这种情况下,总是使用空格而不是制表符来修复缩进。我唯一能确定的是,如果问题不是这种混合,如果代码确实显示了相同的结构,那么代码肯定会有其他错误,所以你应该考虑提供一个我们可以运行的例子。第一个块对我来说是预期的:请参阅@ BKururu,请将你的评论作为答案。在这种情况下,我似乎把制表符和空格混在了一起。