Python中生成邮件正文时拼接出None无报错,如何修复?
问题修复方案:邮件正文出现"None and None"的解决办法
问题根源
- 变量赋值错误:你把
print()函数的返回值赋给了move_plates和read_plates,但print()本身没有返回值(默认返回None),所以这两个变量最终都是None。 - 函数内部逻辑错误:
read_Plates()里的日期计算误用了movePlates变量,应该用readPlates,否则会导致读盘日期的逻辑出错。
修复后的代码
# 假设_days_、movePlates、readPlates、timedelta已正确定义 def move_Plates(): if _days_[movePlates.weekday()] == "Saturday": return f"change day {_days_[movePlates.weekday()]} New Date: {movePlates + timedelta(days=2)}" elif _days_[movePlates.weekday()] == "Sunday": return f"change day {_days_[movePlates.weekday()]} New Date: {movePlates + timedelta(days=1)}" else: return f"move plates on: {_days_[movePlates.weekday()]} {movePlates}" # 直接接收函数返回值,不用print赋值 move_plates = move_Plates() # 如果需要打印查看,单独调用print print(move_plates) def read_Plates(): if _days_[readPlates.weekday()] == "Saturday": # 这里把movePlates改成readPlates return f"change day {_days_[readPlates.weekday()]} New Date: {readPlates + timedelta(days=2)}" elif _days_[readPlates.weekday()] == "Sunday": # 同样替换成readPlates return f"change day {_days_[readPlates.weekday()]} New Date: {readPlates + timedelta(days=1)}" else: return f"read plates on: {_days_[readPlates.weekday()]} {readPlates}" # 同样直接接收返回值 read_plates = read_Plates() print(read_plates) email_text = f"Please can you {move_plates} and {read_plates}" print(email_text)
关键修改点
- 移除
move_plates = print(move_Plates())这种错误赋值,改为move_plates = move_Plates(),如果需要打印内容,单独调用print(move_plates)。 - 修正
read_Plates()函数中日期计算的变量,把movePlates替换为readPlates,保证逻辑正确。 - 改用f-string拼接字符串,比
+更简洁易读,也避免字符串拼接的潜在问题。
内容的提问来源于stack exchange,提问作者Sabrina
相关产品推荐
相关产品推荐

