Hat Python Zeiger?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-06-18 17:10:1126506Durchsuche

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.

Hat Python Zeiger?

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!

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