Maison >développement back-end >Tutoriel Python >Python a-t-il des pointeurs ?

Python a-t-il des pointeurs ?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-06-18 17:10:1126507parcourir

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.

Python a-t-il des pointeurs ?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn