Por que a instrução del no Python não pode excluir dados referenciados por variáveis?
Last Published: April 26, 2020
Resposta
A intenção da função del, conhecida como 'delete', em relação à exclusão de um nome de variável, é remover os vínculos de nome do local ou do namespace global. Essa função Python pura não se destina a excluir fisicamente os dados do disco ou da memória referenciada pela variável.
Por exemplo, foi escrito um código que executa as seguintes tarefas:
1. Usar uma variável para apontar para uma tabela de entrada 2. Usar uma variável para apontar para uma tabela de saída 3. Verificar se a tabela de saída existe e, em caso afirmativo, exclua-a 4. Copiar a tabela de entrada para o local da tabela de saída
De acordo com os requisitos acima, a instrução del não pode ser usada para excluir os dados do disco, ou seja, ela não funciona como a tecla "Delete" no teclado para remover um arquivo. Se o código for executado dessa maneira, conforme mostrado na imagem a seguir, um NameError será lançado ao referenciar a variável não vinculada por meio da chamada à instrução del.
Para excluir os dados do disco, use a função apropriada para excluir arquivos do disco ou da memória. Nesse caso, utilize uma das funções fornecidas pelo módulo ArcPy da Esri.
Nos casos em que os dados que estão sendo excluídos são analisáveis pelo sistema, é possível usar métodos puros de Python para a exclusão de dados.
Resumindo, a instrução del em Python não foi projetada para remover fisicamente dados do disco. Conforme a documentação do Python, "Excluir um nome remove o vínculo dele com o namespace local ou global, dependendo se o nome aparece em uma instrução global no mesmo bloco de código. Se ele não estiver vinculado, será exibida uma exceção NameError."