Python当前编程标准下应选用哪种字符串格式化方式?
该选哪种Python字符串格式化方式?
嘿,这个问题太实用了,很多刚学Python的朋友都会遇到这种新旧写法的困惑!咱一步步说清楚:
先聊聊你提到的两种方式
旧式%格式化:就是你书籍里的
print("Guess number %d of %d" % (variable1, variable2)),这是Python最早的格式化方案,优点是和C语言的printf风格类似,老程序员可能眼熟,但缺点真不少:- 参数顺序必须严格对应,一旦位置错了结果直接乱套
- 不支持重复引用同一个变量,比如想两次用同一个值,得重复传参数
- 类型匹配要求严格,比如
%d只能传整数,不小心传字符串就报错 - 复杂格式化场景下,一堆
%符号堆在一起,可读性特别差
str.format()方法:也就是线上课程推荐的
print("Guess number {} of {}".format(variable1, variable2)),这是Python 2.6开始引入的改进方案,解决了很多%格式化的痛点:- 支持位置索引(比如
"{1} {0}".format(a,b)可以直接反转输出顺序) - 支持关键字参数(
"{name} is {age}".format(name="Alice", age=25),可读性拉满) - 可以重复引用同一个变量,不需要重复传参
- 大括号和对应内容的关联一目了然,代码整洁度提升很多
- 支持位置索引(比如
当前编程标准下的选择
如果只在你提到的这两种里二选一,毫无疑问优先选str.format(),它是Python官方早年间就明确推荐用来替代%格式化的方案,写法更灵活,可读性更强,完全符合现代Python的编码风格。
不过额外提一句,Python 3.6之后还推出了更强大的f-string(格式化字符串字面量),写法是 print(f"Guess number {variable1} of {variable2}"),它比str.format()更简洁,执行效率也更高,现在已经是Python社区最主流的字符串格式化方式了,如果你的Python版本是3.6+,完全可以直接用这种写法哦!
内容的提问来源于stack exchange,提问作者Felipe Miotto




