我試圖在 Python 中運行這個腳本,但我發現了一些非常奇怪的東西:
test = ['file.txt', 'file1.mkv', 'file2.mkv']
for test in test:
print(test)
print(test)
一旦我運行這個腳本,我期待這樣的輸出:
file.txt
file1.mkv
file2.mkv
['file.txt', 'file1.mkv', 'file2.mkv']
相反,我得到的是:
file.txt
file1.mkv
file2.mkv
file2.mkv
我不明白為什么最后一行輸出是“file2.mkv”。
在腳本中,我說要列印每個值test,然后列印test。我從來沒有寫過改變變數test,所以沒有理由輸出不是test我一開始定義的初始變數。
我知道我可能錯了,但我想了解原因。
uj5u.com熱心網友回復:
試試這個:
test = ['file.txt', 'file1.mkv', 'file2.mkv']
for item in test:
print(item)
print(test)
您的最后一次列印是列印您呼叫的回圈中的最后一項test以及您的串列。
uj5u.com熱心網友回復:
Python 沒有與其他語言相同的塊邏輯。在回圈內宣告的變數在回圈后仍然有效。
for i in range(5):
pass
print(i)
將輸出 4
實際發生的事情是這樣的:
# loop
i = 0
i = 1
i = 2
i = 3
i = 4
# end loop
print(i) # print(4)
因為您將回圈變數命名為與陣列相同,所以您將使用單個值覆寫陣列變數。這就是在你的回圈之后test包含的原因。file2.mkv
此問題提供了有關此主題的更多詳細資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/420225.html
標籤:
上一篇:遍歷泛型型別<T>
下一篇:給定的成績串列
