私はPythonを学ぼうとするJava、C++、Cのプログラマーです。いくつかのコードで遊んでいる間、私はこの奇妙な動作に遭遇しました。私は、静的に型付けされていない言語にはなじみがありますが、この現象に対する解決策や説明を思いつくことはできません。Python - 奇妙なリストの動作 - 1つの変数名、別の参照?
for i in range(3):
div(a,b,c,list)
#print(list)
list = []
#print(list)
printABC(a,b,c)
theInput = input("\nselect the column: a, b or c : \n")
if "a" in theInput:
list = b + a + c
elif "b" in theInput:
list = a + b + c
elif "c" in theInput:
list = a + c + b
print(list);
変数または「名前」list
は、私が3つの以上のリスト(a
、b
とc
)にそのリストを分割しています、番号のリストです。次に、私はlist
をクリアし、(a
,b
およびc
)の所定の組合せでそれを再充填する。
ループの最初のパスでは、list
がクリアされますが、forループの2回目のパスでlist = []
が全く別の別の変数を参照していて、list
をクリアしていません。
なぜこのようなことが起こっているのか、誰か説明がありますか?
変数に[built-ins](https://docs.python.org/3/library/functions.html)と同じ名前を付けないでください。 – miradulo
@Mitchが言ったことを補完して明示するために、あなたは変数 'list'の名前をつけてみました。まあ、 'list'は実際には組み込みのクラス名です。組み込み関数の名前を変更するのは悪い習慣です。 'my_list'や' array'のようなものを試してみてください。 – blacksite
はい、1つの変数(不良)名、各繰り返しで異なる参照。 –