Python-Interview Frage elf (Was ist Kontext? Mit dem Kontextmanager-Prinzip?)

  • with wird häufig zum Öffnen von Dateien verwendet. Mit with kann automatisch geschlossen werden, auch wenn ein Fehler auftritt
  • Was ist Kontext?
    • Der Kontext ist tatsächlich stumpf, und der Kontext des Artikels ist eine Bedeutung, die etwas populärer ist. Ich denke, es ist besser, die Umgebung zu nennen
    • Obwohl der Kontext als Kontext bezeichnet wird, ist er normalerweise nur der oben genannte im Programm, aber es ist nur ein netter Aufruf des Kontexts. .
    • Es gibt Höhen und Tiefen bei der Prozessunterbrechung im Betriebssystem, aber gehen Sie nicht auf diese tiefe Frage ein.
    • Jedes Objekt, das die Methoden enter () und exit () implementiert, kann als Kontextmanager bezeichnet werden. Das
      Kontextmanagerobjekt kann das Schlüsselwort with verwenden. Offensichtlich implementiert das Dateiobjekt auch den Kontextmanager.
  • Wie implementieren Dateiobjekte diese beiden Methoden? Wir können eine eigene Dateiklasse simulieren und implementieren und
    die Klasse die Methoden enter () und exit () implementieren lassen.
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 方法也会被调用。

Veröffentlicht 44 Originalartikel · mochte 0 · Besuche 1226

Ich denke du magst

Origin blog.csdn.net/weixin520520/article/details/105451434
Empfohlen
Rangfolge