2017-05-14 12 views
1

私は非常にPythonとプログラミングの新人です。私は今ループについて学んでいて、何が起こるかを見るために次のコードを試しました。私が知りたいのは、次のコードがクラッシュせず、「Robert」を繰り返し続けている理由です。ループ内のDel変数

ありがとうございます。

name = ["Robert", "Mike", "Garry", "Alex"] 
for y in name: 
    print(y) 
    del y 

print("END") 
+0

それが動作する理由だからあなたが求めていますか? –

+0

'for'ループは、' name'変数の値を反復します。最初に変数 'y'を" Robert "に設定します。次にyをMikeに設定します。次回は、 'y'を「Garry」に設定します。等... – lit

答えて

1

forループの各繰り返しは、「新しい」yを作成します。毎回このyを削除すると、その反復に属するyが削除されます。次の反復の開始時に再び「再作成」されます。

delはこのコードの結果をまったく変更しません。

+0

Pythonはブロックスコープを持っていません。 – kindall

+0

コンピュータ/プログラムは、ループの各ラウンドでy変数をリセットしている場合、以前の項目を既に通過したことをどのように覚えていますか?いくつかの隠された変数は、トラックや何かを保持しているPython内ですか? – Gnomon

+0

はい。内部インデックスを使用しているか、イテレータプロトコルを使用しています。この場合、それはリストなので、インデックスを使用しています。 – kindall

0

名前はyを削除した後に、ループの次の繰り返しで再度作成するため、コードが機能します。

あなたはループの後yを印刷しようとした場合、あなたはそれがでdel声明では動作しないことがわかります。

関連する問題