这篇文章将为大家详细讲解有关python中存在函数指针吗,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Python对指针做了良好封装,一切都是“对象”,一切对象都有一个“变量”指向它。这个“变量”就是“指针”。和Java一样,它不可以随机移动,不可以运算。包括函数也是一个“对象”,用一个变量指向它,就是指向函数的入口地址。
C++中指向函数入口地址的指针,叫做函数指针。所以,这一名词我们也借用到Python中。
比如,我写一个排序的代码段,用STL里的sort:
int arr[10]={5,8,4,7,6,5,7,4,2,9}; std::sort(arr,arr+10);
默认是升序排序。如果我想要特殊的排序标准,那就要提供第三个参数。第三个参数就是一个函数指针。sort的原则就是,假设原序列中b在a之前,当函数指针pf(a,b)调用的函数的返回值为true时发生交换。返回false时,和排序的算法有关,比如sort是不稳定排序,所以两数相等时仍有可能交换位置。
我们写一个降序排序。那就需要先写一个比较函数cmp:
bool cmp(int a,int b) { return a>b;//当后面的数大于前面时交换 }
然后,函数名就是它的入口地址,所以我们把它传进去:
std::sort(a,a+10,cmp);
Python中也类似,假设有一个列表的排序函数Sort(list, cmp)
那么,cmp也是一个“对象”,它可以传入函数入口地址。调用语句如下:
def cmp(a,b):return a>b li=[5,8,4,7,6,5,7,4,2,9] Sort(li,cmp)
也就类似于函数指针的功能。
关于python中存在函数指针吗就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。