Python中print()函数行为:逗号分隔参数与加号拼接打印的区别
你给出的示例中因为name是字符串类型,两个语句的输出结果完全一致,但二者本质上存在多维度的差异,并不只是字符串生成方式的区别:
- 参数处理与容错性差异
print("Hello", name)是向print函数传入了2个独立参数,print会自动将所有传入的非字符串类型参数转为字符串,默认在多个参数之间插入空格、末尾追加换行后输出。哪怕name是数字、列表、自定义类实例等任意可序列化对象,都可以正常运行,不需要额外做类型转换。print("Hello " + name)是先执行+字符串拼接操作,生成一个完整的字符串之后再传给print函数。如果name不是字符串类型,会直接抛出TypeError类型错误,必须手动调用str()做类型转换才能正常运行。 - 运行效率差异
当需要拼接的内容多、体积大时,用+拼接字符串会产生大量临时字符串对象,内存开销更高、运行速度更慢。直接给print传多个参数不需要提前做拼接操作,开销更低。 - 灵活度差异
多参数的写法支持通过print的sep参数自定义多个参数之间的分隔符,也可以通过end参数自定义行尾符号,比如print("Hello", name, sep='_', end='!')会输出Hello_Lelouch!,修改成本极低。字符串拼接的写法如果要调整分隔符或者行尾符号,需要手动修改拼接逻辑,灵活度更低。
可以参考下面的测试代码直观感受差异:
name = 987 # 改为数字类型 print("Hello", name) # 正常输出:Hello 987 print("Hello " + name) # 运行报错:TypeError: can only concatenate str (not "int") to str
内容的提问来源于stack exchange,提问作者Pushpak Yadav
相关产品推荐
相关产品推荐

