Pitone

Passa per riferimento vs. Valore in Python

Passa per riferimento vs. Valore in Python
Dopo aver conosciuto Python, puoi trovare casi in cui le funzioni non alterano gli argomenti in un punto come ti aspetteresti, in particolare se conosci molti altri linguaggi per computer. Molti linguaggi usano gli argomenti del metodo come riferimenti, definiti come passaggio per Riferimento alle variabili correnti. Se sei uno sviluppatore Python avanzato che vuole comprendere il modo particolare di Python di trattare gli argomenti del metodo, allora questa guida è davvero per te.

Python supporta il passaggio per oggetto di riferimento

Pass-by-reference e pass-by-value sono innegabilmente i due modi più conosciuti e facilmente comprensibili per il passaggio di parametri tra linguaggi di programmazione. Python è, purtroppo, 'pass-by-object-reference', né "Pass by Value" né "Pass by Reference", spesso definito come "Call by Object Reference" e "Call by Sharing".” È utile esaminare più da vicino il concetto stesso suddividendolo in segmenti mentre ti immergi nelle specifiche tecniche del passaggio per Riferimento:

Passaggio: questo significa fornire un metodo con un argomento.

Come riferimento: questo significa che l'argomento che sposti nel metodo si riferisce a una variabile che ora risiede nella memoria invece di una replica diversa di quella variabile.

Quando assegni al metodo un riferimento a una variabile definita, la variabile a cui corrisponde sarebbe esplicitamente influenzata da tutte le operazioni su questo riferimento. Consideriamo ora un esempio di come, in pratica, funziona. In questo esempio, abbiamo definito una variabile 'argomento' avente un valore di 4. In questo scenario, la variabile 'argomento' non è stato modificato al suo posto. Python sembra gestire l'argomento fornito invece di un riferimento a una variabile presente come valore autonomo.

Ciò significherebbe che invece di riferimento, Python sposta gli argomenti per valore?? Python sposta gli argomenti attraverso l'assegnazione, quindi né per riferimento né con valore. La logica per questo è duplice:

Attualmente, il parametro che passa è un puntatore a un oggetto. Alcuni tipi di dati sono modificabili e alcuni non sono modificabili.

Se spostiamo un oggetto mutabile in una funzione, la funzione acquisisce un riferimento allo stesso oggetto in modo che tu possa mutarlo tutto con soddisfazione della tua anima; tuttavia, l'ambito esterno non saprebbe nulla prima di ricongiungersi al riferimento nella funzione. Una volta terminato, il riferimento esterno mirerà solo all'oggetto reale. Se sposti un oggetto immutabile su una funzione, il riferimento esterno non può sempre essere ricollegato e non puoi semplicemente mutare l'oggetto. Per rendere le cose molto più semplici, capiamo uno per uno.

Passa per riferimento

Prima di tutto, devi capire che la variabile 'mylist' non è una lista ma si riferisce a una lista con valori. Puoi chiamare la variabile 'mylist' un contenitore con valori al suo interno. I valori della lista sono oggetti. La variabile 'mylist' è stata consegnata direttamente alla funzione con i suoi contenuti.

Sia "list" che "my list" sembrano essere la stessa variabile di archiviazione nell'esempio di codice seguente e quindi si applicano allo stesso oggetto di archiviazione. Ecco perché in uscita stampa 'Saeed.'

Qualsiasi azione eseguita sulla variabile o sull'entità verrebbe immediatamente riflessa nel metodo chiamante. Il metodo può modificare interamente il valore della variabile e puntarla su un oggetto completamente distinto. Come puoi vedere nella funzione 'set_list', abbiamo cambiato il contenuto dell'elenco e stampato un intero nuovo elenco con l'elemento 'Aqsa.'Questo perché abbiamo restituito l'elenco modificato e l'abbiamo stampato sulla stessa riga del chiamante.

Il metodo può anche riallocare gli elementi della variabile per lo stesso risultato come di seguito. Puoi vedere che abbiamo aggiunto un nuovo valore all'elenco e la modifica si è riflessa. Abbiamo aggiunto una stringa univoca a un elenco e l'abbiamo restituita al chiamante. Per concludere, il metodo e il chiamante hanno utilizzato la stessa variabile e lo stesso oggetto durante la relazione di passaggio.

Passa per valore

Attraverso il passaggio per valore, al metodo viene fornito un duplicato dell'oggetto argomento che il chiamante gli assegna. Ciò garantisce che l'elemento originale rimanga invariato e tutte le modifiche apportate vengano conservate in posizioni di memoria separate in una replica dello stesso oggetto.

È ugualmente valido con qualsiasi operazione eseguita su una variabile o sull'entità dal metodo. I duplicati di variabili e oggetti nell'ambito del metodo chiamante sono completamente separati per riassumerli.

Passa oggetto per riferimento

In tutta questa situazione, poiché Python è distinto, i metodi di Python ottengono il riferimento all'oggetto molto simile nella memoria a cui si riferisce il chiamante. Al contrario, la tecnica non ottiene la variabile 'mylist' (il contenitore). Il metodo chiamante archivia lo stesso oggetto; il metodo genera il proprio contenitore e genera un indice completamente nuovo per se stesso, proprio come in pass-by-value.

Il chiamante e il metodo parlano dello stesso oggetto nella memoria, ma quando il metodo aggiunto applica un elemento esterno a un elenco, l'entità chiamante viene modificata. Hanno più etichette, ma sono le stesse cose. Entrambe le variabili contengono un oggetto molto simile. Questo è il senso dietro la sua relazione con il movimento dell'oggetto. Nella memoria, il metodo e il chiamante usano un oggetto simile ma li catturano attraverso più variabili. La variabile chiamante (il contenitore) non verrà modificata da eventuali modifiche apportate alla variabile del metodo (il contenitore); vengono modificati solo i dati o il contenuto.

Conclusione

Python opera indipendentemente dai linguaggi che accettano lo spostamento per Riferimento o valore degli argomenti. Gli argomenti del metodo sono variabili locali che sono state allocate a ciascun valore trasferito al metodo. Ma ciò non ti impedisce ancora di ottenere gli stessi risultati che avresti trovato in altre lingue spostando gli argomenti per procura.

WinMouse ti consente di personalizzare e migliorare il movimento del puntatore del mouse su PC Windows
Se vuoi migliorare le funzioni predefinite del puntatore del mouse, usa freeware WinMouse. Aggiunge più funzionalità per aiutarti a ottenere il massim...
Il tasto sinistro del mouse non funziona su Windows 10
Se stai utilizzando un mouse dedicato con il tuo laptop o computer desktop ma il il tasto sinistro del mouse non funziona su Windows 10/8/7 per qualch...
Il cursore salta o si sposta in modo casuale durante la digitazione in Windows 10
Se scopri che il cursore del mouse salta o si sposta da solo, automaticamente, in modo casuale durante la digitazione nel laptop o nel computer Window...