Heim  >  Artikel  >  Backend-Entwicklung  >  Unterschiede in den Python-Funktionsparametern

Unterschiede in den Python-Funktionsparametern

大家讲道理
大家讲道理Original
2017-05-28 09:56:401705Durchsuche

Bei der Verwendung von python habe ich festgestellt, dass der -Funktionsparameter list , der Aufruf von list.append() innerhalb der Funktion ändert die formalen Parameter, was sich von C/C++ unterscheidet. Überprüfen Sie die relevanten Informationen und notieren Sie sie hier In Python kann die ID die Speicheradresse von

Objekt


>>> num1 = 10>>> num2 = num1>>> num3 = 10>>> id(num1)4299190320>>> id(num2)4299190320>>> id(num3)4299190320


Sie können sehen num1, num2, Die drei Objekte von num3 zeigen auf eine Adresse. Python verwendet dazu eine Methode namens

Referenz

, die dem intelligenten Zeiger Variable von C++zhong sehr ähnlich ist Das Zuweisen eines Werts zu einer Variablen entspricht dem +1 des Referenzzählers desselben Objekts und nicht der Neuzuweisung von Speicherplatz. Für Listenobjekte können Sie die folgenden Ergebnisse sehen:


<.>

>>> list1 = [,>>> list2 = [,>>> >>> 4302498128

list1 und list3 zeigen auf denselben Raum und list2 zeigt auf eine andere Adresse

Die Übergabe von Funktionsparametern in Python ist die Objektübergabe. Und es gibt auch lokale und globale Probleme. Beim Übergeben von Parametern gibt es zwei Regeln:

Kopieren Sie die Parameter per Referenz in das Objekt im lokalen Bereich, was bedeutet, dass Variablen, die für den Zugriff auf Funktionsparameter verwendet werden, haben nichts mit der Funktion zu tun, da es ein Kopierproblem gibt, das mit der
    C-Sprache
  • identisch ist. Und das Ändern des lokalen Objekts ist nicht möglich Ändern Sie die ursprünglichen Daten. Veränderbare Objekte sind hauptsächlich Listen und Wörterbücher. Diese Position bedeutet im Wesentlichen, dass die zuvor analysierte Änderung des lokalen Unterobjekts die ID des Wörterbuchobjekts oder Listenobjekts nicht ändert

  • Die Ergebnisse sind wie folgt:


def incrInt(num):
    pId(num)
    num += 1;
    pId(num)def incrList(listArg):
    pId(listArg)
    listArg.append(1);
    pId(listArg)def pId(arg):    print id(arg)
num1 = 10pId(num1)
incrInt(num1)print(num1)

list1 = [0,2]
pId(list1)
incrList(list1)print(list1)


Sie können sehen, dass num innerhalb der Funktion auf eine andere Speicheradresse zeigt, wenn der Wert von int geändert wird, und wenn die Liste geändert wird, befindet sie sich an derselben Speicheradresse

In Python können Objekte in zwei Typen unterteilt werden: Tupel, numerischer Typ (Zahl),
String

(
 python test.py42991819044299181904429918188010433697991243369799124336979912[0, 2, 1]
String

). Alle unveränderlichen Objekte und Wörter. Typische Objekte (Wörterbuch) und Listenobjekte (Liste) sind veränderliche Objekte. Seien Sie daher bei der Übergabe von Parametern vorsichtig.

Das obige ist der detaillierte Inhalt vonUnterschiede in den Python-Funktionsparametern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn