A função eval() em Python

Hiten Kanwar 3 janeiro 2023
A função eval() em Python

Python é uma linguagem de programação interpretada de alto nível. Possui uma estrutura de código limpa e legibilidade com seu recuo significativo perceptível.

A função eval() analisa o argumento da expressão e o avalia como uma expressão python.

A sintaxe da função eval() é fornecida abaixo.

eval(expression, [globals[, locals]])

O valor de retorno será baseado em e será o resultado da expressão avaliada.

Avaliamos uma adição simples no exemplo abaixo.

x = 2
eval("x+5")

Produção:

7

Os argumentos da função eval() são uma string e argumentos opcionais de globals e locals. Se globals forem fornecidos, deve ser um dicionário. Os locals podem ser qualquer objeto de mapeamento.

Suponha que o dicionário globals seja fornecido e o valor da chave não seja fornecido com ele. Uma referência é gerada para o dicionário do módulo integrado builtins e inserida na seção chave antes que a expressão comece a analisar.

Isso sugere aproximadamente que a expressão normalmente tem acesso completo ao módulo builtins padrão. Se o objeto locals não for fornecido, o padrão é o dicionário global. Além disso, em um cenário onde ambos os dicionários são omitidos, a expressão é executada com os globals e locals no ambiente onde a função eval() é chamada.

Existem certas funções presentes dentro do módulo builtins que provavelmente podem danificar o sistema significativamente. Mas certamente é possível bloquear qualquer uma das coisas que possam ser suspeitas.

Por exemplo, considere um exemplo para criar uma lista que representa o número de núcleos disponíveis dentro do sistema.

from os import cpu_count

eval("[1, cpu_count()]")

Produção:

[1, 8]
Observação
Uma vez que esta função avalia cada string como código, deve-se ter muito cuidado ao usá-la. Alguém pode usá-lo para executar código no computador como uma falha de segurança. Por exemplo, o eval(input()) pedirá ao usuário para inserir a string e executá-la como código. Se o módulo os for importado, pode-se realizar todos os tipos de ações no dispositivo, como excluir arquivos e adulterar o sistema.