如何在每次打印之前创建延迟?

时间:2018-08-12 08:40:24

标签: python python-3.x delay text-based

嗨,所以我要用Python创建一个基于文本的游戏,我想这样做,以便在每个打印语句之前有一秒钟的延迟。

我当前的解决方案是这样做:

time.sleep(1)
name = input('Do you happen to remember what your name was? ').capitalize()
print(name + ", that's a nice name.")
time.sleep(1)
print("Well it seems that you are all better now so I'm going to have to let you go")

但是,在每次打印前放置time.sleep真是令人讨厌!

所以我想知道是否有人知道一种更有效的方法。

3 个答案:

答案 0 :(得分:1)

为什么不使用函数呢?

def dprint(s, delay=1):
    time.sleep(delay)
    print(s)

你还好吗?

dprint("hello")

答案 1 :(得分:1)

如果您需要临时使用此功能(对于所有print()函数子调用),则可以使用mock.patch()修补print()函数:

import time
from unittest import mock

OLD_PRINT = print

def make_delayed_print(delay):

    def delayed_print(*args, **kwargs):
        time.sleep(delay)
        OLD_PRINT(*args, **kwargs)

    return delayed_print


with mock.patch('builtins.print', make_delayed_print(1)):
    print(1)
    print(2)

答案 2 :(得分:0)

这就是我的方法,它将支持对print()的所有现有调用,而无需将被调用函数的名称更改为其他名称,并且它支持多个参数和关键字参数(就像常规的{{1 }}函数确实):

print()