0

私は Python の初心者で、次のコードの最後の 2 行をコメント ('#') すると、インデント エラー メッセージが表示されます。

    try:
        return get_callable(callback), {}
#   except (ImportError, AttributeError), e:
#       raise ViewDoesNotExist("Tried %s. Error was: %s" % (callback, st    r(e)))

誰でも助けることができますか?

4

3 に答える 3

5

try/をコメントアウトするときは、 を の前にexcept置きます。if True: #try

    if True: #try:
        return get_callable(callback), {}
#   except (ImportError, AttributeError), e:
#       raise ViewDoesNotExist("Tried %s. Error was: %s" % (callback, st    r(e)))

これにより、内側のブロックをデデントする必要なく、正しい構文が作成されます。コメントのfinally: passにブロックを追加することもできます:except

    try:
        return get_callable(callback), {}
#   except (ImportError, AttributeError), e:
#       raise ViewDoesNotExist("Tried %s. Error was: %s" % (callback, st    r(e)))
    finally:
        pass

try:他の唯一のオプションは、行もコメントアウトし、ブロックのインデントを削除することです

#   try:
    return get_callable(callback), {}
#   except (ImportError, AttributeError), e:
#       raise ViewDoesNotExist("Tried %s. Error was: %s" % (callback, st    r(e)))

またはブロックtry:なしでベアをそのままにしておくことはできません。exceptfinally

于 2012-09-27T22:59:13.460 に答える
4

あなたのコードはもはや構文的に有効ではありません。except 句は、try 句の必須コンパニオンです。

于 2012-09-27T22:58:43.083 に答える
2

別のステートメントがない場合except、python は except ステートメントを探し、代わりにインデントされていない行を見つける可能性があります。

それで、「なぜこれはインデントエラーなのか? インデントとは関係のない が抜けているだけだ」と思うかもしれexceptません。その理由は、python が a に続くインデントされていない行を「認識」し、インデントtry:されてtry.

于 2012-09-27T22:59:10.367 に答える