Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Context Manager Types


ในไพ ธ อน บริบทรันไทม์ได้รับการสนับสนุนโดยคำสั่ง with บริบทถูกกำหนดโดยตัวจัดการบริบท การใช้ตัวจัดการบริบท เราสามารถสร้างคลาสที่กำหนดโดยผู้ใช้เพื่อกำหนดบริบทรันไทม์ มันเข้าสู่งานก่อนที่จะดำเนินการเนื้อหาของคำสั่ง และเมื่อเสร็จสิ้นเนื้อหาของคำสั่ง มันก็จะสิ้นสุดลง

มีสองวิธีที่แตกต่างกันสำหรับตัวจัดการบริบท วิธีการเหล่านี้คือ −

วิธีการ __enter__()

เมธอด __enter__() ใช้เพื่อเข้าสู่บริบทรันไทม์ มันจะส่งคืนวัตถุปัจจุบันหรือวัตถุอื่นที่เกี่ยวข้อง ค่าที่ส่งคืนถูกผูกไว้กับตัวระบุในประโยคคำสั่ง with

วิธีการ __exit__(exc_type, exc_val, exc_tb)

เมธอด __exit__() ใช้เพื่อส่งคืนผลลัพธ์ประเภทบูลีน มันบ่งชี้ข้อยกเว้นใด ๆ ที่เกิดขึ้น หากมีข้อยกเว้นสำหรับ กับ คำสั่งก็จะไปถึงจุดสิ้นสุด

โค้ดตัวอย่าง

class MyFileManager:
   def __init__(self, fname):
      self.file_name = fname

   def __enter__(self):
      self.myFile = open(self.file_name, 'r')
      return self.myFile

   def __exit__(self, exc_type, exc_val, exc_tb):
      if self.myFile:
      self.myFile.close()

   with MyFileManager('sampleTextFile.txt') as myFile:
   x = myFile.read()
print(x)

ผลลัพธ์

Test File.
We can store different contents in this file
~!@#$%^&*()_+/*-+\][{}|:;"'<.>/,'"]