Python はポインターの適切なカプセル化を備えており、すべてが「オブジェクト」であり、すべてのオブジェクトがそれを指す「変数」を持っています。この「変数」が「ポインタ」です。 Java のように、ランダムに移動したり、計算を実行したりすることはできません。関数を含めることも「オブジェクト」であり、変数を指すことは関数のエントリアドレスを指します。
#C では、関数の入り口アドレスを指すポインタを関数ポインタと呼びます。したがって、この用語も Python から借用しています。
たとえば、並べ替えコード セグメントを作成し、STL で並べ替えを使用します。
int arr[10]={5,8,4,7,6,5,7,4,2,9}; std::sort(arr,arr+10);
デフォルトは昇順です。特別な並べ替え基準が必要な場合は、3 番目のパラメータを指定する必要があります。 3 番目のパラメータは関数ポインタです。ソートの原理は、元のシーケンスで b が a より前にあると仮定すると、関数ポインター pf(a,b) によって呼び出される関数の戻り値が true のときに交換が行われるということです。 false が返された場合は、ソート アルゴリズムに関連しています。たとえば、ソートは不安定なソートであるため、2 つの数値が等しい場合でも位置を交換する可能性があります。
関連する推奨事項: "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)
これは、関数ポインターの機能に似ています。
以上がPythonにはポインタがあるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。