ホームページ  >  記事  >  バックエンド開発  >  Python関数のパラメータの違い

Python関数のパラメータの違い

大家讲道理
大家讲道理オリジナル
2017-05-28 09:56:401674ブラウズ

phppythonを使っている過程で、関数のパラメータlistの場合、内部でlist.appendが呼び出されていることが分かりました。関数 () は C/C++ とは異なる仮パラメータを変更します。関連する情報を確認し、ここで記録します。

>>> num1 = 10>>> num2 = num1>>> num3 = 10>>> id(num1)4299190320>>> id(num2)4299190320>>> id(num3)4299190320


として取得できます。ご覧のとおり、3 つのオブジェクト num1、num2、および num3 は、

reference
counting と呼ばれるメソッドを使用してこれを完了します。変数は同等です。同じオブジェクトの参照カウンターは、スペースを再割り当てする代わりに +1 されます。

リスト オブジェクトの場合、次の結果が表示されます:

list1 と list3 は同じスペースを指します。 、そして list2 は別のアドレスを指します。

Python での関数パラメーターの受け渡しは、ローカルとグローバルの問題もあります。


パラメーターをローカル スコープ内のオブジェクトにコピーします。つまり、
C言語

と同じコピーの問題があり、ローカルオブジェクトを変更しても、関数のパラメーターにアクセスするために使用される変数は、関数に呼び出されたオブジェクトとは何の関係もありません。元のデータ

. 変更可能なオブジェクトは主にリストと辞書です。この適切な位置は、本質的に、以前に分析されたローカル サブオブジェクトの変更によって辞書オブジェクトまたはリスト オブジェクトの ID が変更されないことによるものです。以下のように:
  • >>> list1 = [,>>> list2 = [,>>> >>> 4302498128

  • 関数内で、int の値が変更されると、num は別のメモリ アドレスを指し、リストが変更されると、同じメモリ アドレスにあることがわかります。

    Pythonでは、オブジェクトは可変と不変の2種類に分けられます。タプル、数値、
  • string
(

string
)はすべて不変オブジェクトですが、辞書型(辞書とリストのオブジェクトは可変オブジェクトです

)したがって、パラメーターを渡すときは注意してください

以上がPython関数のパラメータの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。