为何datetime.date对象放入列表/元组后打印显示格式不同?
为什么datetime.date对象放入列表后打印会显示"datetime.date"字样?
现象复现
import datetime endDate = datetime.datetime.strptime("2022-05-03", '%Y-%m-%d').date() # 单独打印对象 print(endDate) # 输出:2022-05-03 # 放入列表后打印 print([endDate]) # 输出:[datetime.date(2022, 5, 3)]
原因解析
这是Python中两种字符串表示方法的差异导致的:
- 单独调用
print()时,会触发对象的__str__()方法,datetime.date类的__str__()被设计为返回易读的YYYY-MM-DD格式字符串,适合用户查看。 - 当打印容器(如列表、元组)时,Python会调用容器内每个元素的
__repr__()方法,datetime.date的__repr__()返回的是对象的官方调试表示,包含类型名称和构造参数,方便开发者快速识别对象类型和内部数据。
如果想让列表打印时也显示成YYYY-MM-DD格式,可以手动转换每个元素为字符串:
print([str(date) for date in [endDate]]) # 输出:['2022-05-03']
内容的提问来源于stack exchange,提问作者yatta
相关产品推荐
相关产品推荐

