これはおそらくディスカッション グループに適していると思いますが、私は言語の内部 (または言語自体) に精通していません。いずれにせよ、私を悩ませているのは:
Python がキーワードを使用して外部スコープとの干渉 (副作用) をnonlocal
許可している場合、参照による引数の受け渡しを許可することで、関数の引数との同様の干渉を許可しないのはなぜですか。
現在可能:
>>> def outer():
x = 1
def inner():
nonlocal x
x = 2
print("inner:", x)
inner()
print("outer:", x)
>>> outer()
inner: 2
outer: 2
そうでない理由 - または、次のような場合に何がうまくいかない可能性がありますか:
>>> def outer():
x = 1
def inner(byref x):
x = 2
print("inner:", x)
inner(x)
print("outer:", x)
>>> outer()
inner: 2
outer: 2
(「byref」や「nonlocal」などのキーワードを使用して説明します)。