
本期分享:
9. 字符串拼接优先使用 join 或 f-string
10. len() 统计的是字符数量不是字节数量
11. 浮点数计算存在精度问题
12. 真值判断要理解空值规则
Python 在字符串处理、数字计算和真值判断上都很顺手,但越是常用的地方越容易形成“想当然”的写法。本篇整理几个入门阶段高频遇到的小问题。
9. 字符串拼接优先使用 join 或 f-string
少量字符串拼接可以直接使用 f-string:
name = "Tom"age = 18message = f"{name} is {age} years old"print(message)
如果是在循环中拼接大量字符串,不建议反复使用 +=:
result = ""for word in ["Python", "AI", "Tips"]: result += word + ","
推荐先收集到列表,再使用 join:
words = ["Python", "AI", "Tips"]result = ",".join(words)print(result)
在生成 Prompt、日志、批量文本时,这个习惯很有用。
10. len() 统计的是字符数量不是字节数量
Python 3 的字符串是 Unicode 字符串。
text = "你好Python"print(len(text)) # 8
如果你关心网络传输、文件大小、接口限制,就要先编码成字节:
data = text.encode("utf-8")print(len(data))
这在处理中文 Prompt、模型 Token 估算、接口请求大小时很容易遇到。
11. 浮点数计算存在精度问题
很多语言都有浮点数精度问题,Python 也一样。
print(0.1 + 0.2) # 0.30000000000000004
普通展示可以使用格式化:
value = 0.1 + 0.2print(f"{value:.2f}")
如果是金额、精确小数计算,使用 Decimal:
from decimal import Decimalprice = Decimal("0.1") + Decimal("0.2")print(price) # 0.3
注意 Decimal("0.1") 比 Decimal(0.1) 更合适,因为后者会先得到一个不精确的 float。
12. 真值判断要理解空值规则
Python 中很多对象都可以直接用于 if 判断。
values = []ifnot values: print("empty")
常见假值包括:
但是要注意,不要把“空”和“合法的 0 值”混在一起:
count = 0ifnot count: print("count is empty or zero")
如果业务上 0 是有效值,就应该写得更明确:
if count isNone: print("count is missing")
本篇结束~