Я портирую программу на C ++, которую я написал без веской причины, на Python 3. Есть функция spinner (), которая использует функцию spin ().Они отображают баннер в верхней части программы.Однако по какой-то причине я не могу понять, функция spin () выполняется перед вызовом.Также sleep (1) выполняется перед вызовом.Я не могу понять, почему они выполняются перед тем, как меня вызывают.В настоящее время он выполняет функцию sleep (), а затем функцию spin (), прежде чем он будет вызван.Они не должны выполняться до тех пор, пока не отобразится первый элемент массива.
Я попытался поместить функции spin () и sleep () в разные места, чтобы попытаться выяснить, откуда он вызывается, но при этомломает текущую функциональность.
import time
import sys
def spin():
spinner = ['/', '-', '\\', '|', '']
for i in spinner:
sys.stdout.write(i)
time.sleep(1)
sys.stdout.write("\b")
sys.stdout.flush()
def spinner():
text = "\tVigenere Cipher\n"
textArray = list(text)
for i in range(len(textArray)):
for x in range(i):
sys.stdout.write(textArray[x])
spin()
sys.stdout.write("\r")
sys.stdout.flush()
spinner()
Я ожидаю, что он напечатает символ из textArray, покажет счетчик, напечатает следующий символ, покажет счетчик и т. Д.
Фактические результаты состоят в том, что он сначала спит, печатаетспиннер, затем печатает первый символ.