Python에는 포인터가 잘 캡슐화되어 있습니다. 모든 것이 "객체"이고 모든 객체에는 이를 가리키는 "변수"가 있습니다. 이 "변수"는 "포인터"입니다. Java와 마찬가지로 임의로 이동하거나 계산을 수행할 수 없습니다. 함수를 포함하는 것도 "객체"입니다. 함수를 가리키는 변수는 함수의 항목 주소를 가리킵니다.
C++에서 함수 항목 주소를 가리키는 포인터를 함수 포인터라고 합니다. 그러므로 우리는 이 용어를 Python에서도 빌려왔습니다.
예를 들어 정렬 코드 세그먼트를 작성하고 STL에서 정렬을 사용합니다.
int arr[10]={5,8,4,7,6,5,7,4,2,9}; std::sort(arr,arr+10);
기본값은 오름차순입니다. 특별한 정렬 기준을 원할 경우 세 번째 매개변수를 제공해야 합니다. 세 번째 매개변수는 함수 포인터입니다. 정렬의 원리는 원래 시퀀스에서 b가 a보다 앞에 있다고 가정하고 함수 포인터 pf(a,b)에 의해 호출된 함수의 반환 값이 참일 때 교환이 발생한다는 것입니다. false가 반환되는 경우는 정렬 알고리즘과 관련된 것입니다. 예를 들어 sort는 불안정한 정렬이므로 두 숫자가 같은 경우에도 위치를 교환할 수 있습니다.
관련 추천: "python 비디오 튜토리얼"
내림차순 정렬을 작성합니다. 그런 다음 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)
함수 포인터의 기능과 유사합니다.
위 내용은 파이썬에는 포인터가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!