質問するログイン新規登録

回答編集履歴

1

追記

2020/06/27 10:50

投稿

quickquip
quickquip

スコア11353

answer CHANGED
@@ -1,4 +1,21 @@
1
1
  > リストであれば参照渡しだと書かれているのですが
2
2
 
3
3
  間違いです。
4
- Pythonに参照渡しはありません。値渡しだけです。
4
+ Pythonに参照渡しはありません。値渡しだけです。
5
+
6
+ ----
7
+ (追記)
8
+ これは感想なのですが(本当は回答に書くのはあまりよろしくないかもしれませんが)
9
+
10
+ 「参照渡し」という用語がここまで紛らわしいのは
11
+ 参照渡しを持つ言語が多くないし残ってない
12
+ からかと思います。(まっとうに残っていると言えるのはC++やC#ぐらい? Delphiなんかはあやしい)
13
+ 参照渡しを持っている言語を使ったことがない人の方が圧倒的に多数派で、だから参照渡しというものが正しく伝わらないのではないかと。
14
+
15
+ あと、Pythonでは
16
+ 実行モデル上は変数という概念をPythonは持ってない
17
+ ことが話をややこしくします。
18
+ Pythonにあるのは**[名前への束縛](https://docs.python.org/ja/3/reference/executionmodel.html#naming-and-binding)**なのです。
19
+ 束縛された名前のことを便宜上"変数"と読んでいますが、C言語でいう変数とはそもそも"違うもの"なのがややこしいです。
20
+ C言語でいう"ポインタのようなもの"だけがあるのです。
21
+ (ただ、そういう言語は少数派というわけでもないかと思うので、これはPython言語仕様の用語の問題でしかないでしょうけれども)