Heim > Artikel > Backend-Entwicklung > Hat Python Zeiger?
Python verfügt über eine gute Kapselung von Zeigern. Alles ist ein „Objekt“ und jedes Objekt verfügt über eine „Variable“, die darauf zeigt. Diese „Variable“ ist ein „Zeiger“. Wie Java kann es sich nicht zufällig bewegen oder Berechnungen durchführen. Das Einbinden einer Funktion ist ebenfalls ein „Objekt“. Das Zeigen einer Variablen darauf zeigt auf die Eintragsadresse der Funktion.
Der Zeiger auf die Funktionseintragsadresse in C++ wird Funktionszeiger genannt. Daher entlehnen wir diesen Begriff auch von Python.
Zum Beispiel schreibe ich ein Sortiercodesegment und verwende die Sortierung in STL:
int arr[10]={5,8,4,7,6,5,7,4,2,9}; std::sort(arr,arr+10);
Die Standardeinstellung ist aufsteigende Reihenfolge. Wenn ich spezielle Sortierkriterien möchte, muss ich einen dritten Parameter angeben. Der dritte Parameter ist ein Funktionszeiger. Das Prinzip der Sortierung besteht darin, dass unter der Annahme, dass b in der ursprünglichen Sequenz vor a liegt, der Austausch erfolgt, wenn der Rückgabewert der vom Funktionszeiger pf(a,b) aufgerufenen Funktion wahr ist. Wenn false zurückgegeben wird, hängt dies mit dem Sortieralgorithmus zusammen. Sortieren ist beispielsweise eine instabile Sortierung, sodass es immer noch möglich ist, Positionen zu tauschen, wenn die beiden Zahlen gleich sind.
Verwandte Empfehlungen: „Python-Video-Tutorial“
Wir schreiben eine absteigende Sortierung. Dann müssen Sie zuerst eine Vergleichsfunktion cmp schreiben:
bool cmp(int a,int b) { return a>b;//当后面的数大于前面时交换 }
Dann ist der Funktionsname seine Eintragsadresse, also übergeben wir ihn:
std::sort(a,a+10,cmp);
In Python ist es ähnlich, vorausgesetzt, es gibt eine solche eine Liste Sortierfunktion Sort(list, cmp)
Dann ist cmp auch ein „Objekt“, das die Funktionseintragsadresse übergeben kann. Die aufrufende Anweisung lautet wie folgt:
def cmp(a,b):return a>b li=[5,8,4,7,6,5,7,4,2,9] Sort(li,cmp)
ähnelt der Funktion eines Funktionszeigers.
Das obige ist der detaillierte Inhalt vonHat Python Zeiger?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!