ホームページ > バックエンド開発 > Python チュートリアル > Pythonにはポインタがあるのでしょうか?

Pythonにはポインタがあるのでしょうか?

爱喝马黛茶的安东尼
リリース: 2019-06-18 17:10:11
オリジナル
26484 人が閲覧しました

Python はポインターの適切なカプセル化を備えており、すべてが「オブジェクト」であり、すべてのオブジェクトがそれを指す「変数」を持っています。この「変数」が「ポインタ」です。 Java のように、ランダムに移動したり、計算を実行したりすることはできません。関数を含めることも「オブジェクト」であり、変数を指すことは関数のエントリアドレスを指します。

Pythonにはポインタがあるのでしょうか?

#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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート