Све што треба да знате о Евалу у Питхону



Овај чланак ће вам пружити детаљно и свеобухватно знање о Евалу у Питхону, Његовим недостацима и примерима.

Где год се осврнете око себе, пронаћи ћете апликацију која је посебно направљена да задовољи ваше потребе. Иако постоји много програмских језика који се могу користити за развој ових апликација, већина њих је направљена помоћу . Питхон, заједно са својим сјајним карактеристикама и повећаном свестраношћу, доноси за стол јединствену понуду која је истовремено моћна и изузетно корисна. У овом чланку Евал ин Питхон разговараћемо о следећим тачкама:

Шта је Евал у Питхону?

Функција евал у Питхону је једна од најзанимљивијих опција. Неки то називају хаковањем, а неки пречицом, али на било који начин то можете искористити за покретање програма Питхон унутар Питхон кода. Прилично цоол зар не?





Када користите функцију евал, у основи подстичете тумач да се покрене који је затворен у загради функције евал.

ПитхонЛого- Евал у ПитхонуСинтакса употребе функције евал у Питхону је:



евал (израз, глобалс = Ноне, лоцал = Ноне)

У горњој синтакси,

  1. Израз: То је низ или део кода који се рашчлањује и вреднује као Питхон израз у самом Питхон програму.



  2. Глобал: Речник је тај који се користи за дефинисање свих глобалних метода доступних за извршавање горе поменутог израза. Ово је опционални ентитет и његове употребе зависе од ваших потреба.

  3. Локално становништво: Слично глобалним, ово је још један речник који се користи за одређивање доступних локалних метода као и променљивих.

Да бисте боље разумели употребу ове функције, погледајте пример испод.

из математичког увоза * деф сецрет_фунцтион (): ретурн 'Тајни кључ је 1234' деф фунцтион_цреатор (): # израз који се вреднује екпр = рав_инпут ('Унесите функцију (у смислу к):') # променљива коришћена у изразу к = инт (рав_инпут ('Унесите вредност к:')) # процењује израз и = евал (екпр) # штампање процењеног резултата принт ('и = {}'. формат (и)) ако је __наме__ == '__маин__': фунцтион_цреатор ()

У горњем примеру, фунцтион_цреатор је функција која ће проценити математичке изразе које је креирао корисник приликом извршавања програма.

Излаз:

Унесите функцију (у смислу к): к * (к + 1) * (к + 2)

Унесите вредност к: 3

пример аргумента јава командне линије

и = 60

Анализа

Сада када сте погледали горе наведени код, дозволите нам да га мало даље анализирамо.

  1. Горња функција ће узети било коју променљиву у изразу к као свој улаз.

  2. Једном када се изврши, од корисника ће се затражити да унесе вредност за к, тек након чега ће се генерисати резултат за програм.

  3. Коначно, програм Питхон извршиће функцију евал рашчлањивањемекспркао аргумент.

Недостаци Евала

Слично осталим уграђеним функцијама Питхона, и евал има неколико недостатака који могу створити проблем ако се не рачунају.

Ако погледате горњи пример, једна од главних рањивости функције, фунцтион_цреатор је та што она може изложити све скривене вредности у програму, а такође позвати и штетну функцију, јер ће евал по дефаулту извршити све што се налази у њеној загради.

Да бисте ово даље разумели, погледајте пример испод.

Улаз од корисника

Унесите функцију (у смислу к): сецрет_фунцтион ()

Унесите вредност к: 0

Излаз:

и = Тајни кључ је 1234

Још једна опасна ситуација која долази са употребом функције евал је увоз ос модула. Када увезете ос модул, он омогућава Питхону да чита и записује све датотеке присутне на вашем матичном систему без аутентификације од корисника. У таквом случају, ако погрешно упишете сингллиније кода, све ваше матичне датотеке могу се избрисати.

Решење за све ове недостатке лежи у ограничавању могућности евал функције.

Учинити Евал сигурним у Питхону

Стандардно Евал долази са опцијом рашчлањивања било које функције којој има приступ или било које већ дефинисане. Имајући ово на уму током писања кода, ограничиће могућности евала у значајној мери, осигуравајући тако да ништа не пође по злу.

Да бисте даље разумели овај концепт, погледајте пример испод.

из математичког увоза * деф сецрет_фунцтион (): ретурн 'Тајни кључ је 1234' деф фунцтион_цреатор (): # израз који се вреднује екпр = рав_инпут ('Унесите функцију (у смислу к):') # променљива коришћена у изразу к = инт (рав_инпут ('Унесите вредност к:')) # прослеђивање променљиве к у безбедни речник сафе_дицт ['к'] = к # процена израза и = евал (израз, {'__буилтинс __': Ниједан}, сафе_дицт) # штампање процењени резултат исписа ('и = {}'. формат (и)) ако је __наме__ == '__маин__': # листа сигурних метода сафе_лист = ['ацос', 'асин', 'атан', 'атан2', 'цеил ',' цос ',' цосх ',' степени ',' е ',' екп ',' фабс ',' флоор ',' фмод ',' фрекп ',' хипот ',' лдекп ',' лог ', 'лог10', 'модф', 'пи', 'пов', 'радианс', 'син', 'синх', 'скрт', 'тан', 'танх'] # стварање речника сигурних метода сафе_дицт = дицт ([(к, локално становништво (). гет (к, Ноне)) за к на сигурном_листу]) фунцтион_цреатор ()

Улаз од корисника

Унесите функцију (у смислу к): сецрет_фунцтион ()

Унесите вредност к: 0

Излаз:

НамеЕррор: име 'тајна_функција' није дефинисано

Као што видите ограничавањем приступа евал, негиране су шансе за погрешан излаз који се може показати штетним.

Употреба Евала

Као што је објашњено у горњим одељцима, из неколико безбедносних разлога евал није тако често коришћен. Али ипак постоје посебни случајеви употребе када се употреба евала покаже корисном. Неки од најзначајнијих од њих су.

  1. Ако желите да корисник унесе своје скрипте како би модификовао излаз програма, тада ће вам бити корисно коришћење функције евал.

  2. Док пишете изразе за решавање математичких упита, можете користити евал јер је то много лакше него писање парсера израза.

Сад кад знате све о евалу, надамо се да ћете га искористити у свакодневном програмирању, имајући у виду предности као и недостатке.

Овим смо дошли до краја овог чланка Евал ин Питхон. Да бисте стекли детаљно знање о Питхону, заједно са разним апликацијама, то можете за онлајн обуку уживо са подршком 24/7 и доживотним приступом.

Имате питање за нас? Спомените их у одељку за коментаре „Евал у Питхону“ и јавићемо вам се.