Gerente de contexto Python

Gerente de contexto Python

Gerenciamento de recursos

O uso de recursos como manipulações de arquivos ou acesso ao banco de dados é bastante prevalente em todas as linguagens do computador. No entanto, há um número finito desses recursos. Temos que garantir que restaurar esses recursos após o uso seria o principal obstáculo. Quando não forem dados, o vazamento de recursos ocorrerá, e diminui ou até danifica o computador. A capacidade dos usuários de construir e dividir recursos realocadores será massivamente valiosa. Os gerentes de contexto do Python que facilitam a manipulação de recursos de maneira eficaz podem ser usados ​​para realizar isso.

Gerente de contexto para gerenciamento de recursos

Ficará difícil fechar um arquivo imediatamente quando um pedaço de código lançar um erro ou ter um mecanismo complicado, incluindo muitos caminhos retornados. Try-exceto-final é normalmente utilizado em determinadas linguagens de programação para garantir que. De fato, o recurso de arquivo é encerrado após usá -lo, embora haja um erro. Gerentes de contexto, um módulo de Python, ativar o gerenciamento de recursos simplesmente. O termo "com" será utilizado. Isso criará um objeto que gerencia o contexto até que tenha sido analisado. Classes ou processos com modificadores seriam utilizados para criar gerentes de contexto. Vamos discutir mais gerente de contexto.

Exemplo nº 1

Enquanto utiliza classes para construir gerentes de contexto, verifique se a classe contém as funções como Enter () e Exit (). As atividades de limpeza são realizadas através da função Exit (), que não retornará nada além da função Enter () fornece o recurso que requer desenvolvimento. Para analisar a estrutura de gerar gerentes de contexto com aulas, vamos desenvolver uma classe básica chamada contextManager, como visto aqui:

Classe contextManager ():
def __init __ (auto1):
Print ('Init function será chamado')
Def __enter __ (Self2):
Print ('Enter a função será chamada')
Retornar Self2
def __exit __ (auto2, exc_type, exc_value, exc_traceback):
Print ('Função de saída será chamada')
com contextManager () como gerente:
Print ('Aqui está o com declaração')


No início do código, criamos uma classe denominada como contextManager. Dentro desta classe, definimos uma função init (). Em seguida, utilizamos o método print () para exibir a declaração “a função init será chamada”. Na linha seguinte, outra função, enter (), será definida. Esta função contém "Self2" como um argumento. Chamaremos o método print () para imprimir a declaração “Enter a função será chamada”. Então a declaração de devolução é chamada.

Vamos definir uma nova função chamada Exit (). Esta função tem quatro argumentos diferentes, que contêm o valor de Self2, exc_type, exc_value e exc_traceback. Para esta função, a instrução print () também está sendo aplicada para mostrar a linha “a função de saída será chamada”. Por fim, criaremos um gerente de objetos da classe ContextManager. Empregamos uma declaração impressa () que mostra a mensagem “Aqui está a declaração”.


Uma instância do contextManager é gerada neste exemplo. O atributo após o termo "gerente" recebe esta alocação. As seguintes funções são realizadas sequencialmente ao executar o código acima mencionado:

  • iniciar()
  • digitar()
  • Um órgão de declaração que contém código dentro de uma seção "com".
  • saída(). Os argumentos desta função estão sendo utilizados para controlar erros.

Exemplo nº 2

Vamos usar a abordagem anterior para construir uma classe que ajuda no gerenciamento de recursos de arquivo. A classe FileManager facilita o acesso, escrevendo ou lendo e encerrando arquivos.

Classe FileManager ():
def __init __ (auto1, nome do arquivo, modo):
Self1.nome do arquivo = nome do arquivo
Self1.modo = modo
Self1.arquivo = nenhum
Def __enter __ (Self2):
Self2.Arquivo = aberto (Self2.nome do arquivo, Self2.modo)
Retornar Self2.arquivo
def __exit __ (auto2, exc_type, exc_value, exc_traceback):
Self2.arquivo.fechar()
com FileManager ('Olá.txt ',' w ') como f:
f.Write ('teste')

impressão (f.fechado)


Primeiro de tudo, criamos uma classe conhecida como "FileManager". Agora definimos diferentes funções relacionadas a esta classe. Primeiro, definimos a função de init (). Dentro desta função, passamos três argumentos vários argumentos. O primeiro parâmetro é "Self1", o segundo parâmetro mostra o nome do arquivo "nome do arquivo" e o último parâmetro mostra o "modo" do arquivo. Criamos um objeto denominado nome de arquivo e definimos seu valor igual ao nome original do arquivo necessário.

Em seguida, criamos outro objeto chamado "modo", e aqui especificamos o formato do arquivo definido. Declaramos o último objeto nomeado como "arquivo" e agora o valor desse objeto será definido como "nenhum". Vamos inicializar outra função enter (). Fornecemos o valor de "Self2" como um argumento para esta função. Aqui chamamos o método Open () para abrir o arquivo especificado. Esta função possui dois parâmetros que incluem o nome do arquivo que queremos abrir e o modo de abrir o arquivo. O parâmetro de modo mostra para qual objetivo queremos abrir o arquivo. O modo do arquivo será "gravar" ou "ler".

Então utilizamos a declaração de retorno. Na próxima etapa, queremos sair desse arquivo. Então, aplicamos o método Exit (). Vamos passar quatro argumentos para esta função. Em seguida, utilizamos o método FileManager (). Carregamos um arquivo usando esta função. Dentro desta função, especificamos o texto que queremos escrever no arquivo. E também especificamos o modo do arquivo "w". Agora aplicamos o método write (). Para encerrar o código, empregamos o método print (). Dentro desta função, utilizamos uma declaração fechada para fechar o arquivo.


Ao utilizar o Gerenciador de contexto, gerenciaremos arquivos. Quando o bloco "com" é implementado, as etapas apropriadas ocorrem uma após a outra:

  • Sempre que a função init () é chamada, uma instância do FileManager é construída, tendo olá.txt como o título do arquivo e "w" como o formato do FI • o olá.O arquivo txt é acessado no formato de gravação pela função Enter (), que também retorna uma classe de arquivo ao atributo f.
  • O arquivo contém o conteúdo "Teste.”
  • Quando a seção com a seção é encerrada, a função exit () lida com o fechamento do arquivo. Porque o FileManager realmente gerenciou efetivamente o término do arquivo, que normalmente seria necessário para lidar explicitamente, quando imprimir (f.fechado) é executado, o resultado será verdadeiro.

Conclusão

Neste artigo, conversamos sobre o gerente de contexto Python. Podemos atribuir e utilizar os recursos nos momentos específicos que escolhemos devido a gerentes de contexto. A expressão "com" é a ilustração mais usada de um gerente de contexto. Sempre que queremos emparelhar dois eventos relacionados e implementar um código entre eles, utilizamos gerentes de contexto. Executamos um exemplo no qual demonstramos a criação de um gerente de contexto. Manipulamos arquivos pelo uso de um gerente de contexto e com comandos.