【python】 time_str = time_str.strip() 与 time_str = str(time_str).strip() 的区别

主要区别在于第一种写法假设 time_str 已经是字符串(或至少有 .strip() 方法)的类型;第二种写法则会先把 time_str 强制转换成字符串,再调用 .strip()。具体来说:

python 复制代码
time_str = time_str.strip()
  • 要求原来的 time_str 必须是 strbytes(或其他定义了 strip 方法的类型),否则会抛出 AttributeError
  • 不会对非字符串类型做任何隐式转换。
python 复制代码
time_str = str(time_str).strip()
  • 无论 time_str 原本是数字、None、列表、日期对象,还是其他什么类型,都会先调用 str(...) 得到它的字符串表示,然后再去掉首尾空白。
  • 可以避免因为 time_str 不是字符串而导致的调用 .strip() 报错,但有时会把 None 变成 "None"、把数字 123 变成 "123" 等,需注意这种隐式转换可能不是你想要的结果。

选择建议

  • 如果你确定 time_str 一定就是字符串,且希望在参数不符合预期时报错,第一种写法更"干净"。
  • 如果你不确定调用者传入的值类型,想要一个"宽容"的转换(任何值都能得到一个去空白后的字符串),第二种写法更保险。