コードの他の部分で使用できる値を返す方法を理解するための小さなコードがあります。以下では、変数zまたは値snoozeを返すだけです。しかし、それは動作しません。なぜこれがうまくいかないのか理解してくれる人がいらっしゃいますか?関数から値を返すことができません
import time
def sleepy(reps, snooze):
t = []
for x in range(reps):
x = time.time()
time.sleep(snooze)
y = time.time()
z = y - x
t.append(z)
print 'difference = ', z*1000
print 'total:', (sum(t)/reps) * 1000
return z
sleepy(10, 0.001)
print z # does not like this.
スヌーズを印刷すると、不平を言うこともあります。何故ですか?
@IcyFlameを使用することができますを印刷!全体的な問題は、 'z'が返されるが、変数に格納されないということです。その変数を追加することはありません。 –
@MartijnPietersしかし、 'z'が' for'ループのスコープの内側にあるので、それが返るようには表示されません。 – manas
@silent_warrior:いいえ、Pythonはモジュールと関数の新しいスコープを作成します(list、 dictとset comprehensions、ジェネレータ式とlambdaは、特殊な関数形式です)。ループ内で割り当てられた変数は、そのスコープの残りの部分に表示されます。 –