Overalt hvor du ser deg rundt, finner du et program som er spesielt utviklet for å oppfylle dine behov. Selv om det er mange programmeringsspråk som kan brukes til å utvikle disse applikasjonene, er de fleste bygget med . Python sammen med sine flotte funksjoner og økt allsidighet bringer til bordet unike tilbud som er både kraftige og ekstremt nyttige til enhver tid. I denne Eval in Python-artikkelen vil vi diskutere følgende punkter:
Hva er Eval i Python?
Eval-funksjonen i Python er et av de mest interessante alternativene der ute. Noen kaller det et hack og noen kaller det en snarvei, men uansett kan du bruke det til å kjøre et Python-program innenfor en Python-kode. Ganske kult, ikke sant?
Når du bruker eval-funksjonen, oppfordrer du i utgangspunktet tolken til å løpe som er lukket i braketten til eval-funksjonen.
Syntaksen for bruk av eval-funksjonen i Python er:
eval (uttrykk, globaler = ingen, lokalbefolkningen = ingen)
I syntaksen ovenfor,
Uttrykk: Det er strengen eller koden som blir analysert og evaluert som et Python-uttrykk i selve Python-programmet.
Global: Det er ordboken som brukes til å definere alle de globale metodene som er tilgjengelige for å utføre uttrykket nevnt ovenfor. Dette er en valgfri enhet, og bruken avhenger av ditt behov.
Lokalbefolkningen: I likhet med globaler er dette en annen ordbok som brukes til å spesifisere tilgjengelige lokale metoder samt variabler.
For å forstå bruken av denne funksjonen bedre, ta en titt på eksemplet nedenfor.
fra matematisk import * def secret_function (): return 'Secret key is 1234' def function_creator (): # expression to be evaluated expr = raw_input ('Skriv inn funksjonen (i form av x):') # variabel brukt i uttrykk x = int (raw_input ('Angi verdien av x:')) # evaluering av uttrykk y = eval (expr) # utskrift evaluert resultatutskrift ('y = {}'. format (y)) hvis __name__ == '__main__': function_creator ()
I eksemplet ovenfor er function_creator en funksjon som vil evaluere matematiske uttrykk opprettet av brukeren når programmet kjøres.
Produksjon:
Skriv inn funksjonen (i form av x): x * (x + 1) * (x + 2)
Skriv inn verdien på x: 3
y = 60
Analyse
Nå som du har sett på koden som er delt ovenfor, la oss analysere den litt videre.
Ovennevnte funksjon vil ta en hvilken som helst variabel i uttrykket x som inngang.
Når den er utført, vil brukeren bli bedt om å angi en verdi for x, bare deretter vil resultatet for programmet bli generert.
Til slutt vil Python-programmet utføre eval-funksjonen ved å analysere
ekspr
som argument.
Ulemper med Eval
I likhet med andre innebygde funksjoner i Python, kommer eval også med noen ulemper som kan skape et problem hvis ikke regnskapsføres.
Hvis du ser på eksemplet ovenfor, en av de viktigste sårbarhetene i funksjonen, function_creator er at den kan avsløre eventuelle skjulte verdier i programmet og også påkalle en skadelig funksjon som eval som standard vil utføre alt som ligger innenfor parentesen.
uklar logikk i kunstig intelligens
For å forstå dette videre, ta en titt på eksemplet nedenfor.
Inndata fra bruker
Skriv inn funksjonen (i form av x): secret_function ()
Skriv inn verdien av x: 0
Produksjon:
y = Hemmelig nøkkel er 1234
En annen farlig situasjon som følger med å bruke eval-funksjonen er å importere os-modulen. Når du har importert os-modulen, lar den Python lese og skrive alle filer som er tilstede på ditt opprinnelige system uten godkjenning fra brukeren. I et slikt tilfelle, hvis du feilaktig skriver inn en singelkodelinje, kan alle dine innfødte filer bli slettet.
Løsningen på alle disse ulempene ligger i å begrense eval-funksjonens evner.
Gjør Eval Safe i Python
Eval kommer som standard med muligheten for å analysere en hvilken som helst funksjon den har tilgang til eller noen som allerede er definert. Hvis du holder dette i bakhodet mens du skriver koden din, begrenser eval evner i betydelig grad, og sørger for at du ikke får noe galt.
For å forstå dette konseptet videre, ta en titt på eksemplet nedenfor.
fra matematisk import * def secret_function (): return 'Secret key is 1234' def function_creator (): # expression to be evaluated expr = raw_input ('Skriv inn funksjonen (i form av x):') # variabel brukt i uttrykk x = int (raw_input ('Skriv inn verdien av x:')) # passerende variabel x i safe dictionary safe_dict ['x'] = x # evaluering av uttrykk y = eval (expr, {'__builtins __': Ingen}, safe_dict) # utskrift evaluert resultatutskrift ('y = {}'. format (y)) hvis __navn__ == '__main__': # liste over sikre metoder safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil ',' cos ',' cosh ',' grader ',' e ',' exp ',' fabs ',' floor ',' fmod ',' frexp ',' hypot ',' ldexp ',' log ', 'log10', 'modf', 'pi', 'pow', 'radianer', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # skaper en ordbok med sikre metoder safe_dict = dict ([(k, lokalbefolkningen (). få (k, Ingen)) for k i safe_list]) function_creator ()
Inndata fra bruker
Skriv inn funksjonen (i form av x): secret_function ()
Skriv inn verdien av x: 0
Produksjon:
NameError: navnet 'secret_function' er ikke definert
Som du kan se ved å begrense tilgangen til eval, er sjansene for feil produksjon som kan vise seg å være skadelig negert.
Bruk av Eval
Som forklart i avsnittene ovenfor, er eval på grunn av flere sikkerhetsgrunner ikke så vanlig. Men likevel er det spesielle bruksområder der bruk av eval viser seg å være nyttig. Noen av de viktigste av disse er.
Hvis du vil at brukeren skal legge inn sine egne scriptlets for å endre utdataene til programmet, vil det være nyttig å bruke eval-funksjonen.
Mens du skriver uttrykk for å løse matematiske spørsmål, kan du bruke eval, da det er mye enklere enn å skrive en uttrykksparser.
Nå som du vet alt om eval, håper vi at du vil bruke det samme i den daglige programmeringen din, mens du husker fordelene og ulempene.
Med dette kommer vi til en slutt på denne Eval in Python-artikkelen. For å få inngående kunnskap om Python sammen med dets forskjellige applikasjoner, kan du for live online trening med 24/7 support og levetidstilgang.
Har du et spørsmål til oss? Nevn dem i kommentarfeltet i “Eval in Python”, så kommer vi tilbake til deg.