为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Python 3 中调用之前停止函数执行

如何在 Python 3 中调用之前停止函数执行

翻过高山走不出你 2021-09-25 18:24:38
我正在将一个我无缘无故编写的 C++ 程序移植到 Python 3。有一个使用 spin() 函数的 spinner() 函数。这些在程序顶部显示一个横幅。但是,由于某种原因我无法弄清楚,spin() 函数在被调用之前正在执行。sleep(1) 也在被调用之前被执行。我无法弄清楚为什么在被调用之前执行这些。它当前先执行 sleep() 函数,然后在调用之前执行 spin() 函数。它们不应该在显示第一个数组项之后执行。我曾尝试将 spin() 和 sleep() 函数放在不同的位置,以尝试解决从何处调用它的问题,但这样做会破坏当前的功能。import timeimport sysdef 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 打印一个字符,显示微调器,打印下一个字符,显示微调器等。实际结果是它先休眠,打印微调器,然后打印第一个字符。
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

您需要在sys.stdout.flush() 之前sleep不是之后调用。flush是强制文本从缓冲区到屏幕的魔法,并且在这sleep意味着你(通常;缓冲是一个实现细节)在sleep完成之前不会看到任何东西。


查看完整回答
反对 回复 2021-09-25
  • 1 回答
  • 0 关注
  • 206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号