@contextmanager
def tcp_connection_to(*args, **kwargs):
    s = socket.create_connection(*args, **kwargs)
yield s
s.close()

@contextmanager
def udp_connection():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
yield s
s.close()
Как использовать сокет в Python в качестве менеджера контекста?