0

いくつかのデモ コードで問題を説明しましょう。

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

ここでの問題は、try-except 句が if ステートメントに含まれているように見えることです。"not a" が True の場合のみ、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

インデントにタブとスペースが混在しています。これにより、インタープリターはインデント レベルを誤解し、try1 レベル高いと考えてしまいます。

>>> 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 に答える