面试题答案
一键面试1. 数据类型支持
- %s:
- 几乎支持所有数据类型,会将数据通过
str()
方法转换为字符串进行格式化。例如:
- 几乎支持所有数据类型,会将数据通过
num = 123
print('数字:%s' % num)
- 对于一些特殊类型,如
datetime
对象,也能直接格式化,但不会进行特定的格式化处理,只是简单转为字符串。 - f - string:
- 同样支持所有数据类型,在处理复杂数据类型时,可以通过调用对象的方法来实现更丰富的格式化。例如,格式化
datetime
对象:
- 同样支持所有数据类型,在处理复杂数据类型时,可以通过调用对象的方法来实现更丰富的格式化。例如,格式化
from datetime import datetime
now = datetime.now()
print(f'当前日期时间:{now.strftime("%Y-%m-%d %H:%M:%S")}')
2. 表达式处理能力
- %s:
- 基本不支持表达式计算,只能对单个变量进行格式化。例如不能直接在
%s
占位符内进行计算:
- 基本不支持表达式计算,只能对单个变量进行格式化。例如不能直接在
# 以下代码会报错
# num1 = 1
# num2 = 2
# print('结果:%s' % (num1 + num2))
- f - string:
- 支持在花括号内编写表达式,能实时计算并格式化。例如:
num1 = 1
num2 = 2
print(f'结果:{num1 + num2}')
3. 代码可读性
- %s:
- 语法相对古老,占位符和变量分离,当格式化内容较多时,代码结构可能不够清晰。例如:
name = 'Alice'
age = 30
print('姓名:%s,年龄:%s' % (name, age))
- 阅读代码时,需要先看占位符,再去后面找对应的变量。
- f - string:
- 更直观,变量和格式化内容在同一处,逻辑清晰。例如:
name = 'Alice'
age = 30
print(f'姓名:{name},年龄:{age}')
4. 不同版本Python中的兼容性
- %s:
- 从Python诞生就存在,在所有Python版本中都可用,兼容性极好。
- f - string:
- 从Python 3.6开始引入,在3.6之前的版本不支持。
5. 大量字符串格式化操作时的选择及原因
- 性能角度:
- f - string性能通常优于
%s
。f - string在编译时就处理了字符串格式化,而%s
是在运行时处理,对于大量格式化操作,f - string的编译时优化能减少运行时开销。
- f - string性能通常优于
- 代码维护角度:
- 选择f - string。因为其代码可读性更好,结构清晰,在维护代码时,开发人员能更快速理解和修改格式化逻辑。
综上所述,处理大量字符串格式化操作时,优先选择f - string。