| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | # Создание своего контекстного менеджераclass CustomManagerContext:    def __enter__(self):        print('Start manager context')        return "This is value as ..."        def __exit__(self, exc_type, exc_val, exc_tb):        print('End manager context')        print(exc_type, exc_val, exc_tb, sep=',')        if isinstance(exc_val, ZeroDivisionError):            print('Нельзя делить на ноль')            return True        # return True # без этой строки может быть исключениеclass FileContext:    def __init__(self, path, mode):        self.path = path        self.mode = mode    def __enter__(self):        print("Open file")        self.file = open(self.path, self.mode)        return self.file    def __exit__(self, exc_type, exc_val, exc_tb):        print("Close file")        self.file.close()def test_2():    with FileContext('file.txt', 'r') as file:        print(file.read())def test_1():    # with open('text.txt', 'r') as file:    #     file.read()    with CustomManagerContext() as cust:        print(cust)        print('hello')        1/0def main():    # test_1()    test_2()if __name__ == '__main__':    main()
 |