ページへ戻る
+ Links
印刷
Python/値渡しと参照渡し
の編集 ::
NJF Wiki
xpwiki
:
Python
/
値渡しと参照渡し
の編集
# baa8d46e の編集
ページ内容:
*値渡しと参照渡しがある理由 [#baa8d46e] なぜこのような仕組みがあるか理解するには、値渡し、参照渡しそれぞれの利点、難点を知る必要があります。 値渡しは引数で与えられた変数の中身をコピーし、新しい変数に入れかえています。そのため、関数内の変数がプログラムの他の部分と独立しており(スコープが異なり)、関数外に影響を与えないことから、プログラムの管理が楽になります。しかし、一方で変数のコピーは負荷の高い処理のため、特に大きなデータの場合には処理が遅くなります。 参照渡しは引数のデータをコピーせずにそのまま使い回すため、どれだけ大きなデータを引数としてもパフォーマンスにはほとんど影響しません。一方で個々の関数内でデータを書きかえられるため、プログラムのどこでデータが変更されたかを管理するのは難しくなります。実際、参照渡しの変数をうっかり書きかえてしまうことによるバグは、初心者がかならず経験するものの一つです。 このような利点、難点があり、それぞれの利点を有効に利用するため、多くのプログラム言語ではデータの小さい変数型は値渡し、データが大きくなる可能性のある変数型は参照渡しとする言語仕様が採用されています。 その意味では文字列型は参照渡しの方が良さそうですが、Pythonでは言語仕様を簡単にするためか、値渡しとなっています。大きな文字列をあつかうときには処理が遅くなりがちなので注意が必要です。 Pythonで大きな文字列を頻繁に編集する場合には、リストに変換することなどが常套手段とされています。
編集の要約:
Q & A 認証:
ページ更新時は次の質問にお答えください。(プレビュー時は必要ありません)
Q:
「東京」の読みがな?(ひらがなで)
A:
お名前:
タイムスタンプを変更しない
テキスト整形のルールを表示する