我希望打印程序中的每条消息,每个字符之间的延迟很小。
我可以使用
import time
string = "hello world"
for char in string:
print(char, end='')
time.sleep(.25)
针对单个字符串执行此操作。我可以使用__print__方法将其推断给类,但这仍然需要我每次想使用编辑后的打印方法时都使用一个类。如何为整个程序中打印的每个字符增加延迟,以便可以在任何地方使用print("foo")
并期望它能按预期工作?
答案 0 :(得分:1)
好吧,您可以为此创建一个函数,即:
def print_delayed(string):
for char in string:
builtins.print(char, end='', flush=True) # flush gets the actual delay, otherwise
# the text is printed after all the sleeps
time.sleep(.25)
然后,您可以将print
设置为此函数,即:
print = print_delayed
但是,我不建议您这样做;只需调用您已创建的新函数,而不是覆盖内置函数即可。
这里是working example。
答案 1 :(得分:1)
就像阿尔宾在评论中说的那样,最好创建一个函数并调用它,而不是像这样的print
:
def delayed_print(v, *args, **kwargs):
print(v,*args, **kwargs)
time.sleep(.25)
string = "hello world"
for char in string:
delayed_print(char, end='')
答案 2 :(得分:1)
您可以像这样重载print
函数:
import builtins
import time
def print(*args, **kwargs):
for char in args[0]:
builtins.print(char, end='')
time.sleep(.25)
这将使模块级的功能过载。
答案 3 :(得分:0)
您可以覆盖打印:
import time
import sys
string = "hello world"
def print(x):
for char in x:
sys.stdout.write(char)
time.sleep(.25)
sys.stdout.write('\n')
print(string)
将为您带来想要的东西。