g = None
try:
g = open("mydata.txt", "r")
except IOError:
print(’Python could not open the file mydata.txt.’)
if g:
try:
lines = g.readlines()
print("The list of lines is:")
print(lines)
except IOError:
print(’Error while trying to read the data in the file.’)
これは、私の教科書からPythonでtry
とexcept
を使用した例です。教科書には、「g
にNone
(if
ステートメントの論理コンテキスト内でFalse
と扱われる)の初期バインディングが与えられていると述べています。私の理解から、g
は既にopen
関数から返されたファイルオブジェクトを保持していますが、if
ステートメントのブール値コンテキスト内でFalse
としてどのように扱うことができますか?それは、一度「2つのオブジェクトを持っていない」2つのオブジェクトにどのように変数を割り当てることができますか?
g = open("mydata.txt", "r")
:時に再割り当てされますと、ファイルオブジェクトへNone
を保持しているから
回答ありがとうございます。しかし、 'g'はif文で' None'をどのようにして元に戻しましたか?教科書によると、if文の論理的コンテキスト内で 'g'はFalseとして扱われます。 –
@alexlauそれは決して元に戻されません。 'try' /' catch'の目的は、ファイルを開くことができない場合に 'open'が投げることができる例外をキャッチすることです。 'open'が例外をスローすると、再割り当ては起こらないので、' g'は 'try'が終了したときに' None'を保持します。 'if g:'は基本的に、オープンが成功したかどうかをチェックしています。 – Carcigenicate