7

Pythonでファイルを読むたびに、私が欲しいのは次のような気がします:

with open("filename") as file_handle:
    for line in file_handle:
        #do something

これは本当に好ましいイディオムですか?この二重インデントがすべてのファイル読み取りロジックをインデントすることは、私をややイライラさせます。このロジックを 1 行または 1 レイヤーに折りたたむ方法はありますか?

4

5 に答える 5

2

はい、これは完全に慣用的な Python です。

複数レベルのインデントにあまり悩まされるべきではありません。確かに、これが起こる唯一の方法ではありません。

if condition:
    for x in sequence:
        #do something with x

インデントのレベルが大きくなりすぎた場合は、複数の関数にリファクタリングする時期です。私が Python について最も気に入っている点の 1 つは、物事を分割する際の摩擦が減ることです。

with open("filename") as file_handle:
    result = do_something(file_handle)
于 2013-08-20T20:04:52.783 に答える
1

つまり、まったく同じセマンティクスを維持したい場合は、いいえ。

于 2013-08-20T19:32:04.630 に答える
0

明確にするために:

@私自身、もちろんイディオムです!イディオムの with/for 行には、いくつかの利点があります。

  • エラー時にファイルを自動的に閉じます。
  • チャンクごとにファイルを読み込み、メモリの使用を制限します。
  • 広く使用されています。他のコーダーはすぐに理解するでしょう。
于 2013-08-20T19:56:36.273 に答える