Hvad er forskellen mellem exec () og eval () i Python?


Svar 1:

Først og fremmest er eval kort til evaluering (et simpelt udtryk). Exec er kort til udførelse (en erklæring om Python-kode).

Et udtryk evalueres i Python svarende til evaluering af et matematisk udtryk. Python fortolker udtrykket baseret på nogle regler og returnerer derefter en værdi. I Python kan et udtryk være en hvilken som helst værdi, der kan tildeles en variabel. Eval tager et enkelt udtryk som input, evaluerer udtrykket i henhold til Python-regler og returnerer den resulterende værdi.

Eval giver dig også mulighed for at give yderligere input for at låse hvilke funktioner, der har tilladelse til at blive kaldt. Det er svært at låse tingene ned, når du genererer dynamisk kode, så du sandsynligvis bør begrænse alle påkald, der kunne bruges dårligt ved kun at give adgang til kun den funktionalitet, du ved, at du faktisk har brug for helt sikkert.

Når du leverer input til eval, behøver du dog ikke give eval en streng. Du kan give eval bytecode input, som du lige har udarbejdet fra en streng, og den vil evaluere bytecode som et udtryk og returnere værdien.

Exec giver dig ikke en returværdi. Exec tager en streng pythoninstruktioner og udfører dem. Det returnerer altid intet. Men den udfører enhver kode python kan udføre, ikke kun hvad du kan tildele til en variabel. Hvis du ikke er interesseret i returværdien, kan du muligvis bruge exec, da alt hvad du kan lægge i et python-program, du kan sætte i exec. Der er en masse ting, som du kan lægge i et python-program, som du ikke kan tildele til en variabel. Dette er de ting, som du ikke kan give som evalueringsinput.