Maison >développement back-end >Tutoriel Python >Python a-t-il des pointeurs ?
Python a une bonne encapsulation des pointeurs. Tout est un "objet", et chaque objet a une "variable" pointant vers lui. Cette « variable » est un « pointeur ». Comme Java, il ne peut pas se déplacer de manière aléatoire ni effectuer de calculs. Inclure une fonction est également un "objet". Pointer une variable vers elle pointe vers l'adresse d'entrée de la fonction.
Le pointeur vers l'adresse d'entrée de fonction en C++ est appelé pointeur de fonction. Par conséquent, nous empruntons également ce terme à Python.
Par exemple, j'écris un segment de code de tri et j'utilise le tri en STL :
int arr[10]={5,8,4,7,6,5,7,4,2,9}; std::sort(arr,arr+10);
La valeur par défaut est l'ordre croissant. Si je veux des critères de tri particuliers, je dois fournir un troisième paramètre. Le troisième paramètre est un pointeur de fonction. Le principe du tri est qu'en supposant que b est avant a dans la séquence d'origine, l'échange se produit lorsque la valeur de retour de la fonction appelée par le pointeur de fonction pf(a,b) est vraie. Lorsque false est renvoyé, cela est lié à l'algorithme de tri. Par exemple, le tri est un tri instable, il est donc toujours possible d'échanger des positions lorsque les deux nombres sont égaux.
Recommandations associées : "Tutoriel vidéo Python"
Nous écrivons un tri décroissant. Ensuite, vous devez d'abord écrire une fonction de comparaison cmp :
bool cmp(int a,int b) { return a>b;//当后面的数大于前面时交换 }
Ensuite, le nom de la fonction est son adresse d'entrée, nous le transmettons donc :
std::sort(a,a+10,cmp);
C'est similaire en Python, en supposant qu'il y ait une fonction de tri de liste Sort(list, cmp)
Ensuite, cmp est aussi un "objet", qui peut transmettre l'adresse d'entrée de la fonction. L'instruction appelante est la suivante :
def cmp(a,b):return a>b li=[5,8,4,7,6,5,7,4,2,9] Sort(li,cmp)
est similaire à la fonction d'un pointeur de fonction.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!