多くのことが、Pythonのパスバイオブジェクトリファレンスについて書かれています。しかし、thisやthisのようなスレッドを読むのは混乱します。それらのスレッドでオブジェクトの参照と変更可能性
は、いくつかは他の人が可変または不変オブジェクトが同じように扱われていることを言っている間可変性は、重要であると言います。私は素朴な疑問を持っている
は、なぜa
の内容は、コードの最初のスニペットに変更され、第二には変更されませんか?オブジェクト参照渡しのthis explanationによれば、両方の場合において参照の内容を変更すべきではないか?
def fn(b):
b += 1
a = 2
fn(a)
print(a)
def fn(b):
b += [4]
a = [2]
fn(a)
print(a)
記事(スレッドではなく、SOフォーラムではありません)あなたは情報の膨大な量を含むようにリンクします。私たちにそれらを転載するように求めるのではなく、利用可能な回答を読んでください。 – TigerhawkT3
技術的には、Pythonは「[call by sharing](https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing)」を使用しています。また、混乱は本当にPython変数の根本的な誤解に由来しています。 Pythonの変数は、オブジェクトに配置する名前タグのようなものです。関数に引数を渡すときには、その引数に与えられた名前タグをそのオブジェクトに置きます。 –