Pythonでファイルを読むたびに、私が欲しいのは次のような気がします:
with open("filename") as file_handle:
for line in file_handle:
#do something
これは本当に好ましいイディオムですか?この二重インデントがすべてのファイル読み取りロジックをインデントすることは、私をややイライラさせます。このロジックを 1 行または 1 レイヤーに折りたたむ方法はありますか?
はい、これは完全に慣用的な Python です。
複数レベルのインデントにあまり悩まされるべきではありません。確かに、これが起こる唯一の方法ではありません。
if condition:
for x in sequence:
#do something with x
インデントのレベルが大きくなりすぎた場合は、複数の関数にリファクタリングする時期です。私が Python について最も気に入っている点の 1 つは、物事を分割する際の摩擦が減ることです。
with open("filename") as file_handle:
result = do_something(file_handle)
つまり、まったく同じセマンティクスを維持したい場合は、いいえ。
明確にするために:
@私自身、もちろんイディオムです!イディオムの with/for 行には、いくつかの利点があります。