如何在Python中实现兼容原生功能的逐字延迟输出自定义print函数
逐字延迟打印兼容原生print功能实现方案
报错原因
原自定义函数仅声明了1个位置形参text,传入多个参数时就会触发参数数量不匹配的TypeError,要兼容原生print的所有功能,需要对齐原生print的参数定义,再封装逐字输出逻辑即可。
最终实现代码
import sys import time def print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False): # 按原生规则拼接所有输入内容为完整字符串 full_str = sep.join(str(obj) for obj in objects) + end # 逐字符延迟输出 for char in full_str: file.write(char) file.flush() time.sleep(0.1) # 兼容原生flush的强制刷新逻辑 if flush: file.flush() # 测试用例 class Monkey: def __init__(self, name): self.name = name monkey = Monkey('George') # 多参数、类属性传参测试,和原生print用法完全一致 print('Monkey', monkey.name, 'is funny') # 自定义分隔符、结尾符测试 print(1, 2, 3, sep='|', end='~\n')
功能说明
- 用
*objects接收任意数量的位置输入参数,支持多值、任意类型对象传入 - 完整保留原生print的
sep(分隔符)、end(结尾符)、file(输出流)、flush(强制刷新)所有参数,行为和原生实现完全对齐 - 逐字延迟0.1秒输出的逻辑不变,输出效果和初始需求一致
内容的提问来源于stack exchange,提问作者Samantis
相关产品推荐
相关产品推荐

