ファイル内の行を次のように反復するコードに出くわしました。
for line in open(filename, 'r'):
do_all_the_things()
それは次のようなもののよりPythonicなバージョンですか:
with open(filename, 'r') as f:
for line in f:
do_all_the_things()
インデントが少ないので見栄えが良くなりますが、同じですか?私が知っていることから、with
基本的finally: f.close()
にその効果にまたは何かを追加して、ブロックを離れた後にオブジェクトがクリーンアップされるようにします。最初のfor
ループが終了して (またはおそらく a で短くされてbreak
)、変数が範囲外になると、同じことが起こりますか? コードの最初のビットからヒントを得て、キーストロークを節約できますか、それとも修正する必要がありますか?