Питхон

Прођи референцу вс. Вредност у Питхон-у

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

Питхон подржава прослеђивање референци објекта

Пасс-би-референце и пасс-би-валуе су несумњиво два најпознатија и лако разумљива начина за пролазак параметара између програмских језика. Питхон је, нажалост, „референца прослеђивања објекта“, нити „Прођи вредност“ нити „Прођи референцу“, често се назива „Позив референцом објекта“, као и „Позив дељењем.”Корисно је пажљивије погледати сам концепт тако што ћете га поделити на сегменте док зарањате у техничке специфичности проласка поред Референце:

Пасс: то значи снабдевање методе аргументом.

По референци: то значи да се аргумент који пребаците на методу односи на променљиву која се сада налази у складишту уместо на другу реплику те променљиве.

Док методи додељујете референцу дефинисаној променљивој, на променљиву којој она одговара изричито ће утицати све операције на овој референци. Размотримо сада пример како то у пракси функционише. У овом примеру смо дефинисали променљиву 'свађа који имају вредност од 4. Током овог сценарија променљива 'свађа није измењен на свом месту. Изгледа да Питхон обрађује наведени аргумент уместо референце на садашњу променљиву као самосталну вредност.

Да ли би то значило да уместо помоћу Референце, Питхон аргументе помера по вредности? Питхон премешта аргументе кроз додељивање, дакле ни референцом ни вредношћу. Логика за ово је двострука:

Тренутно је параметар који се предаје показивач на објекат. Одређене врсте података су променљиве, а неке нису променљиве.

Ако променљиви предмет преместимо у функцију, функција добија референцу на исти објекат, тако да можете све то мутирати на задовољство своје душе; међутим, спољни опсег не би знао ништа пре него што се поново придружите референци у функцији. Када завршите, спољни Референт усмериће се само на стварни објекат. Ако преместите непроменљиви објекат у функцију, спољна референца се увек не може поново повезати и не можете само мутирати објекат. Да ствар буде много једноставнија, хајде да разумемо једну по једну.

Прођи референцу

Пре свега, морате да схватите да променљива „моја листа“ сама по себи није листа, већ се односи на листу која има вредности. Променљиву „милист“ можете назвати контејнером који садржи вредности. Вредности листе су објекти. Променљива 'милист' је директно достављена у функцију са својим садржајем.

Чини се да су и „листа“ и „моја листа“ исте променљиве меморије у доњем примеру кода и стога се примењују на исти објект складишта. Због тога се на излазу штампа 'Саеед.'

Свака радња извршена на променљивој или ентитету одмах би се пресликала на метод позиваоца. Метода може у потпуности изменити вредност променљиве и усмерити је ка потпуно различитом објекту. Као што видите у функцији 'сет_лист', променили смо садржај листе и одштампали целу нову листу која садржи елемент 'Акса.'То је зато што смо вратили измењену листу и одштампали је у истом реду као и позивалац.

Метода такође може прерасподелити елементе променљиве за исти резултат као у наставку. Видите да смо на листу додали нову вредност и промена се одразила. Листи смо додали јединствени низ и вратили је позиваоцу. Да закључимо, метод и позивалац користе исту променљиву и објекат током релације проласка.

Пасс би Валуе

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

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

Предај објекат по референци

Током ове ситуације, с обзиром да је Питхон различит, Питхон-ове методе добијају врло сличну референцу на објекат у меморији на коју се позива позивалац. Супротно томе, техника не добија променљиву „милист“ (контејнер). Метода позиваоца чува исти објекат; метода генерише нечији контејнер и генерише потпуно свеж индекс за свој, баш као у пролазној вредности.

Позиватељ и метода говоре о истом објекту у меморији, али када додата метода примењује спољну ставку на листу, ентитет позиваоца се мења. Имају више ознака, али то су исте ствари. Обе променљиве садрже врло сличан објекат. То је осећај који стоји иза његовог односа према кретању предмета. У складишту, метода и позивалац користе сличан објекат, а ипак их хватају кроз више променљивих. Променљива позиваоца (контејнер) неће се променити никаквим модификацијама променљиве методе (контејнер); мењају се само подаци или садржај.

Закључак

Питхон делује независно од језика који прихватају померање по референци или вредности аргумената. Аргументи методе су локалне променљиве које су додељене свакој вредности пренесеној у методу. Али то вас и даље не спречава да постигнете исте исходе које бисте пронашли на другим језицима док премештате аргументе преко проксија.

Најбољи емулатори играће конзоле за Линук
Овај чланак ће навести популарни софтвер за емулацију играће конзоле доступан за Линук. Емулација је слој компатибилности софтвера који опонаша хардве...
Најбољи Линук Дистрос за игре у 2021
Линук оперативни систем далеко је превалио свој изворни, једноставни изглед заснован на серверима. Овај ОС се изузетно побољшао последњих година и сад...
Како снимити и стримовати своју играћу сесију на Линук-у
У прошлости се играње игара сматрало само хобијем, али с временом је играчка индустрија забележила огроман раст у погледу технологије и броја играча. ...