ここでPythonとはPython3の話をしているのですが、Python3でもPython2でも同じなのであればPython2の話でも大歓迎です。
(https://docs.python.org/ja/3/tutorial/controlflow.html#defining-functions)でpythonの変数がobject referenceであるようなことが示唆されていて(値 (value) とは常にオブジェクトへの 参照(reference) をいい、オブジェクトの値そのものではありません。[docsより引用])、実際に調べてみてもそう書かれているサイトがたくさん見つかります。そこで質問なのですが、
- pythonの変数はポインタであると言う解説を見たのですが、そうなのでしょうか?ポインタであるならば、C言語等のメモリアドレスを指すポインタとということでしょうか?
a = 1
としたときにaは1という値を持つ整数オブジェクトのポインタを持っているのでしょうか?それともid(a)
で得られるような値を持っているのでしょうか?- (https://docs.python.org/ja/3/reference/simple_stmts.html#assignment-statements)に、「名前は現在のローカル名前空間内のオブジェクトに束縛されます。[docsより引用]」とあります。ということは変数なんてものはなくて、あるのはたくさんのオブジェクトとたくさんの各オブジェクトのエイリアスのリストみたいなもの?ということなのでしょうか?
1.と2.は若干被った質問になってしまいましたすみません。間違ったところがあればビシバシ指摘していただけるとありがたいです。
※また、この辺のことを解説してる公式のドキュメントとか教えていただけないでしょうか?見落としてるだけで(https://docs.python.org/3/)にあるなら、どこにあるを教えてください。よろしくお願いします。
追記1:
実装のことを書き忘れていました。一応CPythonでの話です。
謝辞:
otnさん、TakaiYさん、quickquipさん、回答していただきありがとうございます。
おかげさまで疑問が解消し、すごくもやもやがスッキリしました。
どなたの回答も一様に素晴らしく、わかりやすく、Pythonやプログラミング言語の理解に近づくことができ優劣は付け難いものです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/31 09:20