Python如何为map生成的打印设备输出每行追加对应当前时间
问题原因
- 你提前将
self._time赋值为固定字符串,时间会被锁定为赋值那一刻的结果,无法实现每条记录生成时对应不同的实时时间,也不能满足你示例中不同产品对应不同时间的需求。 map传入的多个参数需要都是长度匹配的可迭代对象,self._time是字符串类型,迭代时会被拆分为单个字符,和self.Product的元素长度不匹配,自然无法得到正确结果。
解决方案
如果需要每条记录对应生成时刻的实时时间(即你示例中不同产品对应不同时间的效果),推荐直接使用列表推导式实现,代码更易读:
from time import strftime def send_output(self): return [f"Printer - {product} - {strftime('%H:%M:%S')}" for product in self.Product]
如果你更习惯使用map写法,也可以用lambda包装逻辑:
from time import strftime def send_output(self): return list(map(lambda p: "Printer - {} - {}".format(p, strftime('%H:%M:%S')), self.Product))
如果需要本次调用send_output返回的所有记录使用同一个时间,只需在方法内部先统一获取一次时间即可:
from time import strftime def send_output(self): current_time = strftime('%H:%M:%S') return [f"Printer - {product} - {current_time}" for product in self.Product]
内容的提问来源于stack exchange,提问作者d33p3r
相关产品推荐
相关产品推荐

