Python の書籍を読み進めているのですが、以下の関数がありました。
python
1def read_data(filename): 2 ''' 3 ファイルを1行ずつ読み込み float 化して返却する 4 ''' 5 numbers = [] 6 with open(filename) as f: 7 for line in f: 8 numbers.append(float(line)) 9 return numbers
気になっているのは with で、 with ステートメントは抜けると自動的に f.close() すると学びました。
この関数は少し冗長だと感じましたので、試しに以下の様に修正してみました。
python
1def read_data(filename): 2 with open(filename) as f: 3 return [float(line) for line in f]
python
1def read_data(filename): 2 return [float(line) for line in open(filename)]
動作自体は期待した結果が得られたのですが、
質問したいのは、上記のような書き方でも正常に close() されるかどうかになります。
python プログラムが終了する際に、 open されているものがあれば close されることは知っているのですが、関数を抜けた時点で close されるのか非常に気になっております。
以上、よろしくお願い申し上げます。
(Pythonのバージョンは、3.5.1 です)

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/06/25 15:33
2016/06/27 22:52 編集
2016/06/28 03:51
2016/06/28 04:07
退会済みユーザー
2016/06/29 08:53