Python の名前バインディングとは何か、またこのバインディングがいつ解釈されるかを理解しようとしています。
cでは、
include <stdio.h>
int main()
{
int X = 42;
int* Y[1];
Y[0] = &X;
X = 666;
printf("%d", *Y[0]);
return 0;
}
666 を出力します。私は Python コードのブロックを期待していました:
X = 42
L = []
L.append(X) #3
X = 666
print(L) #5
同じことをしますが、そうではありません。3 と 5 のラベルが付いた行の間で正確に何が起こるでしょうか? #3は、Xのように「42」として知られるオブジェクトへの別の参照を作成し、それをX'と呼び、X'をLが指すオブジェクト[]に格納しますか?