>  기사  >  백엔드 개발  >  파이썬에는 포인터가 있나요?

파이썬에는 포인터가 있나요?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼원래의
2019-06-18 17:10:1126411검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.