1. ホーム
  2. python

[解決済み] withステートメントで定義された変数がwithブロックの外部で使用可能か?

2023-01-25 23:48:32

質問

次のような例を考えてみましょう。

with open('a.txt') as f:
    pass
# Is f supposed to be defined here?

PEP-343と同様にwith-statementの言語ドキュメント(2.7)も読みましたが、私の知る限りではこの件に関しては何も書いてありません。

CPython 2.6.5では f はwith-blockの外で定義されているようですが、私は変更される可能性のある実装の詳細には頼りたくないのです。

どのように解決するのですか?

はい、コンテキスト・マネージャーは with 文の外側で利用できるようになり、これは実装やバージョンに依存しません。 with 文の を使用しない は新しい実行スコープを作成します。