ネストされたおよび複数のコンテキストマネージャー
メニューを表示するにはスワイプしてください
Pythonで複数のリソース(例えば複数のファイルを同時に開く場合など)を扱う際には、各リソースが適切に取得・解放されることを保証する必要があります。ここで、ネストされたコンテキストマネージャと複数のコンテキストマネージャの利用が特に有効になります。上の動画では、withステートメントのネストと1行で複数のコンテキストマネージャを使用する2つのアプローチを示しています。
withステートメントをネストするとは、1つのwithブロックを別のwithブロックの内部に配置することを指します。これは、あるリソースの使用が別のリソースに依存している場合に役立ちます。例えば、1つのファイルから読み込み、別のファイルに書き込む際に、両方のファイルが正しく管理されるようにすることができます:
with open('input.txt', 'r') as infile:
with open('output.txt', 'w') as outfile:
for line in infile:
outfile.write(line.upper())
しかし、Pythonでは1つのwithステートメントで両方のファイルをカンマ区切りで同時に開くこともできます。この方法はコードをより簡潔にし、各リソースが取得された逆順で解放されることを保証します。つまり、最後に開いたリソースがブロック終了時に最初に閉じられます。
# Open two files simultaneously using a single 'with' statement
with open('input.txt', 'r') as infile, open('output.txt', 'w') as outfile:
for line in infile:
outfile.write(line.lower())
# When the block ends, outfile is closed first, then infile
1行で複数のコンテキストマネージャを使用する方法は単なる構文上の糖衣ではなく、複数のリソースを安全に管理する堅牢な手段です。特にファイル、ネットワーク接続、ロックなど、常に正しく解放しなければならないリソースを扱う際に重要です。
さらに学ぶ
すべて明確でしたか?
フィードバックありがとうございます!
セクション 2. 章 6
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 2. 章 6