コンテキストとwithステートメント(開いているファイルの巧妙な書き込みなど)

通常のオープンファイルの読み取り

試してください:

  f = open( "/ erer / 123.txt")

  f.read()を出力します

最後に:

  f.close()

説明:ファイルが開かれて読み取りが成功したかどうかに関係なく、接続を閉じてリソースを解放するステートメントが最終的に実行されます

 

withステートメントの省略形を使用する

での裏書きはコンテキスト式と呼ばれます

open( "/ erer / 123.txt")をfとして:

  f.read()を出力します

注:withは、コンテキストを含むパッケージです。withモジュールの下でコードを実行します(上)。コードは接続を確立します。コードがwithモジュールで実行されると、コードが実行されます(下)。接続を閉じてリソースを解放します。

 

注:   1 / meでエラーが報告された場合、彼はprint f.read()の実行を続行しませんが、(以下で)接続を閉じてリソースを解放します。

open( "/ erer / 123.txt")をfとして:

  1 /私

  f.read()を出力します

 

#原則:

クラスAAA:

  def __enter __(self):上記の関数

    戻ります

  def __exit __(self、exc_type、exc_value、tb):次の関数

    「次の関数、リソースを解放するために接続を閉じる実行」

  def test(self):

    「クエリを実行」を印刷

AAAをfとすると、fはAAAと等しくなく、上記の__enter __()の戻りデータと等しく、上記では、AAA()自体である自己を返します。

  f.test()はself.test()になり、独自の関数を実行します

        実行後、withモジュールからジャンプし、次の関数__exit __()を実行して接続を終了し、リソースを解放します。この関数は4つの変数を受け入れる必要があります。f.test()中に例外が発生すると、4つの例外変数が受け入れられます。通常の実行変数はなし。実行が異常な場合は、以下の__exit __()を使用して、4つの変数と実行するアクションを決定するかどうかを確認することもできます。

順序:最初に上記の関数を実行し、次に内部でアクションを実行し、最後に次の関数を実行します

おすすめ

転載: www.cnblogs.com/kaibindirver/p/12688998.html