Pytonorm

Gå förbi referens vs. Värde i Python

Gå förbi referens vs. Värde i Python
Efter att ha känt Python kan du hitta tillfällen där funktionerna inte ändrar argumenten på ett ställe som du förväntar dig, särskilt om du är bekant med många andra datorspråk. Många språk använder metodargument som referenser, definierade som att de skickas med referens till aktuella variabler. Om du är en avancerad Python-utvecklare som vill förstå Pythons speciella sätt att behandla metodargument, är den här guiden verkligen något för dig.

Python stöder passera efter objektreferens

Pass-by-reference och pass-by-value är onekligen de två mest välkända och lättförståeliga sätten att parametrar passera mellan programmeringsspråk. Python är tyvärr 'pass-by-object-reference', varken "Pass by Value" eller "Pass by Reference", ofta benämnt "Call by Object Reference" samt "Call by Sharing".”Det är användbart att titta närmare på själva konceptet genom att dela upp det i segment medan du kastar dig in i de tekniska detaljerna för att passera förbi Referens:

Passera: detta innebär att förse en metod med ett argument.

Genom hänvisning: det betyder att argumentet du flyttar över till metoden hänvisar till en variabel som nu finns i lagring istället för en annan replik av den variabeln.

När du tilldelar metoden en referens till en definierad variabel påverkas variabeln den motsvarar uttryckligen av alla operationer i denna referens. Låt oss nu överväga ett exempel på hur detta i praktiken fungerar. I det här exemplet har vi definierat en variabel 'arg ' med ett värde på 4. Under hela detta scenario är variabeln 'arg ' ändrades inte i stället. Python verkar hantera ditt tillhandahållna argument istället för en hänvisning till en nuvarande variabel som ett fristående värde.

Skulle detta innebära att istället för genom referens flyttar Python argument efter värde? Python flyttar argument genom tilldelning, så varken genom referens eller med värde. Logiken för detta är dubbelt:

För närvarande är parametern som skickas in en pekare till ett objekt. Vissa typer av data är muterbara och vissa är inte muterbara.

Om vi ​​flyttar ett föränderligt objekt till en funktion, får funktionen en hänvisning till samma objekt så att du kan mutera allt till din själs tillfredsställelse; dock skulle det externa omfånget inte veta någonting innan du återförenar referensen i funktionen. När du är klar, riktar den externa referensen bara mot det faktiska objektet. Om du flyttar ett oföränderligt objekt till en funktion kan den externa referensen alltid inte bindas om, och du kan inte bara mutera objektet. För att göra saker mycket enklare, låt oss förstå en efter en.

Gå förbi referens

Först och främst måste du förstå att variabeln 'min lista' i sig inte är en lista utan hänvisar till en lista med värden. Du kan kalla variabeln 'min lista' en behållare med värden inom den. Listvärdena är objekt. Variabeln 'mylist' har levererats direkt till funktionen med dess innehåll.

Både "lista" och "min lista" verkar vara samma lagringsvariabler i kodexemplet nedan och gäller således samma lagringsobjekt. Det är därför det skrivs ut 'Saeed vid utskrift.''

Alla åtgärder som görs på variabeln eller enheten speglas omedelbart till uppringningsmetoden. Metoden kan helt ändra värdet på variabeln och rikta den mot ett helt distinkt objekt. Som du kan se i funktionen 'set_list' har vi ändrat listinnehållet och skrivit ut en helt ny lista med elementet 'Aqsa.'Detta beror på att vi har returnerat den modifierade listan och skrivit ut den på samma rad som den som ringer.

Metoden kan också omfördela variabelns element för samma resultat som nedan. Du kan se att vi har lagt till ett nytt värde i listan och ändringen har återspeglats. Vi har lagt till en unik sträng i en lista och returnerat den till den som ringer. Avslutningsvis har metoden och den som ringer använt samma variabel och objekt under hela förbipasseringsrelationen.

Gå förbi värde

Genom pass by value levereras metoden med ett duplikat av argumentobjektet som den som ringer tilldelar det. Detta säkerställer att det ursprungliga objektet förblir oförändrat och alla ändringar som gjorts behålls på separata minnesplatser i en kopia av samma objekt.

Det är lika giltigt för alla operationer som utförs på en variabel eller enheten enligt metoden. Dubbletter av variabler och objekt i uppringningsmetodens omfång är helt separerade för att sammanfatta dem.

Skicka objekt enligt referens

Under hela denna situation, eftersom Python är distinkt, får Pythons metoder den mycket liknande objektreferensen i lagringen som den som ringer till. Omvänt erhåller inte tekniken variabeln 'mylist' (behållaren). Uppringningsmetoden lagrar samma objekt; metoden genererar en behållare och genererar ett helt nytt index för sin egen, precis som i förbigående värde.

Den som ringer och metoden talar om samma objekt i lagringen, men när den bifogade metoden tillämpar ett externt objekt i en lista, ändras den som ringer. De har flera etiketter, men de är samma saker. Båda variablerna har ett mycket liknande objekt. Det är känslan bakom dess förhållande till rörelsen av objektet. I lagringen använder metoden och den som ringer ett liknande objekt men fångar dem genom flera variabler. Uppringningsvariabeln (behållaren) kommer inte att ändras genom några modifieringar av metodvariabeln (behållaren); endast data eller innehållet ändras.

Slutsats

Python fungerar oberoende av språk som accepterar flyttning av referens eller värde för argument. Metodargument är lokala variabler som har allokerats till varje värde som överförs till metoden. Men det hindrar dig fortfarande inte från att få samma resultat som du skulle hitta på andra språk när du flyttar argument per proxy.

Mus AppyMouse styrplatta och muspekare för Windows-surfplattor
AppyMouse styrplatta och muspekare för Windows-surfplattor
Surfplattanvändare saknar ofta muspekaren, särskilt när de brukar använda bärbara datorer. Pekskärmen Smartphones och surfplattor har många fördelar o...
Mus Mellan musknappen fungerar inte i Windows 10
Mellan musknappen fungerar inte i Windows 10
De mittknappen hjälper dig att bläddra igenom långa webbsidor och skärmar med mycket data. Om det slutar, kommer du sluta använda tangentbordet för at...
Mus Hur man ändrar vänster och höger musknapp på Windows 10 PC
Hur man ändrar vänster och höger musknapp på Windows 10 PC
Det är en hel norm att alla datormusenheter är ergonomiskt utformade för högerhänta användare. Men det finns musenheter tillgängliga som är speciellt ...