Pythonインタビューの質問11(コンテキストとは何ですか?コンテキストマネージャの原則とは?)

  • withはファイルを開くためによく使用され、withを使用すると、エラーが発生した場合でも自動的に閉じることができます
  • コンテキストとは何ですか?
    • コンテキストは実際には鈍く、記事のコンテキストは意味です、もう少し人気があるので、環境を呼び出すほうが良いと思います
    • コンテキストはコンテキストと呼ばれますが、通常はプログラムでは上記のものだけですが、コンテキストへの呼び出しにすぎません。
    • オペレーティングシステムのプロセスの中断には浮き沈みがありますが、この深い質問については掘り下げません。
    • enter()およびexit()メソッドを実装するオブジェクトは、コンテキストマネージャーと呼ばれ、
      コンテキストマネージャーオブジェクトはwithキーワードを使用できます。明らかに、ファイルオブジェクトはコンテキストマネージャも実装しています。
  • では、ファイルオブジェクトはこれらの2つのメソッドをどのように実装するのでしょうか。独自のファイルクラスをシミュレートして実装し
    、クラスにenter()メソッドとexit()メソッドを実装させることができます。
class File():

    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode

    def __enter__(self):
        print("entering")
        self.f = open(self.filename, self.mode)
        return self.f

    def __exit__(self, *args):
        print("will exit")
        self.f.close()
        
# __enter__() 方法返回资源对象,这里就是你将要打开的那个文件对象,
# __exit__() 方法处理一些清除工作。

with File('out.txt', 'w') as f:
    print("writing")
    f.write('hello, python')
    
# 你就无需显示地调用 close 方法了,由系统自动去调用,哪怕中间遇到异常 close 方法也会被调用。

元の記事を公開44件 ・いい ね0件 訪問数1226

おすすめ

転載: blog.csdn.net/weixin520520/article/details/105451434