ในไพ ธ อน บริบทรันไทม์ได้รับการสนับสนุนโดยคำสั่ง 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 ~!@#$%^&*()_+/*-+\][{}|:;"'<.>/,'"]