- # Python入門 > 関数定義・ファンクション
関数の引数にリストを渡した場合
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
関数に引数として渡される値は、関数内のローカル変数となるという解説を行いました。
スポンサーリンク
参考:
変数のスコープ/グローバル変数とローカル変数 – Python入門ルーム
関数内からグローバルスコープの変数にアクセスする – Python入門ルーム
しかし、例外として、関数に引数として、リストを渡された場合は、関数内で変更されたリスト要素の値が、グローバルスコープでも有効となります。
def listchange(lists): lists[2] = 'hello' lst = [1, 2, 3, 4, 5, 6] print lst listchange(lst) print lst
実行結果。
[1, 2, 3, 4, 5, 6] [1, 2, 'hello', 4, 5, 6]
ローカル変数のルールを適用するなら、「listchange(lst)」を呼び出した後でも、リスト(lst)の要素の値は、変更されていないはずです。
しかし、実際には、リスト(lst)は、[1, 2, ‘hello’, 4, 5, 6]となっており、グローバルスコープに値の変更の影響が及んでいます。
これは、リストの場合は、参照渡しとなっているからです。
リストではない変数の場合、値渡しとなり、関数内には、引数の値のコピーが渡されます。
スポンサーリンク
<< 前の記事 : 関数内からグローバルスコープの変数にアクセスする
- - 関連記事 -
- 関数内からグローバルスコープの変数にアクセスする
- 変数のスコープ/グローバル変数とローカル変数
- 関数で複数の値をreturnする
- 関数引数のデフォルト値の指定、キーワード引数での関数呼び出し
- 関数定義・ファンクションの書き方
スポンサーリンク