Не знаю, баг ли это, или я не понимаю некоторых особенностей языка, но вот примеры.
from threading import Thread
threads = []
for i in range(2):
threads.append(
Thread(target=lambda: print(i))
)
for t in threads:
t.start()
# output:
# 1
# 1
from threading import Thread
threads = []
for i in range(2):
Thread(target=lambda: print(i)).start()
# output:
# 0
# 1
from threading import Thread
threads = []
for i in range(2):
threads.append(
Thread(target=lambda i: print(i), args=[i])
)
for t in threads:
t.start()
# output:
# 0
# 1
Вопрос: почему первый код выдаёт не 0 1, а 1 1?