Junior
Dê um exemplo de uso do gerenciador de contexto em Python.
sobes.tech IA
Resposta da IA
# Abertura do ficheiro:
# Utilizar o gestor de contexto garante o fecho automático do ficheiro,
# mesmo que ocorra uma exceção.
with open('my_file.txt', 'w') as f:
# Escrever dados no ficheiro
f.write('Hello, world!\n')
f.write('Isto é um teste.')
# Exemplo de criação de um gestor de contexto próprio usando uma classe:
class ManagedResource:
def __enter__(self):
print('Recurso alocado')
# Pode devolver um objeto que será atribuído à variável após 'as'
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print('Recurso libertado')
# Pode tratar exceções. Retornar True suprime a exceção.
return False
# Uso do gestor de contexto criado:
with ManagedResource() as res:
print('A trabalhar com o recurso')
# res - é o objeto devolvido por __enter__
# Exemplo de criação de um gestor de contexto próprio usando o decorador contextmanager:
from contextlib import contextmanager
@contextmanager
def efficient_resource():
print('Recurso eficiente alocado')
try:
yield 'Recurso eficiente' # Objeto que será devolvido
finally:
print('Recurso eficiente libertado')
# Uso do gestor de contexto com decorador:
with efficient_resource() as eff_res:
print(f'Usamos: {eff_res}')