应老粉要求,每晚加餐一个最新面试题
包括Python面试中常见的问题,涵盖列表、元组、字符串插值、比较操作符、装饰器、类与对象、函数调用方式、数据结构操作、序列化、数据处理函数等多个方面。
旨在帮助数据科学家和软件工程师准备面试或提升Python技能。
2、Python面试题解析:如何进行字符串插值?
这道题考察的是 Python 中字符串格式化的几种方式,属于基础到中等难度的题目。 难度取决于面试官期望你掌握的程度,从简单的 % 格式化到 f-string,都需要了解。
难度:⭐⭐ (中等)
考点:字符串格式化、% 操作符、str.format()、f-string、模板字符串
案例 & 解释:
Python 提供多种字符串插值(格式化)的方法:
1、`%` 操作符 (旧式格式化): 类似 C 语言的 printf(),使用 % 占位符。
name = "Alice"
age = 30
print("My name is %s and I am %d years old." % (name, age))
2、`str.format()` (新式格式化): 使用 {} 占位符,并通过 format() 方法填充值。
name = "Bob"
age = 25
print("My name is {} and I am {} years old.".format(name, age))
print("My name is {0} and I am {1} years old.".format(name, age)) # 使用索引
print("My name is {name} and I am {age} years old.".format(name=name, age=age)) # 使用关键字
3、f-string (格式化字符串字面值): Python 3.6 引入,简洁易读,性能也最好。
name = "Charlie"
age = 28
print(f"My name is {name} and I am {age} years old.")
print(f"My name is {name.upper()} and I am {age + 2} years old.") # 支持表达式
4、模板字符串 ( `string.Template` ): 适用于用户提供的字符串,安全性更高。
from string import Template
name = "David"
age = 32
t = Template("My name is $name and I am $age years old.")
print(t.substitute(name=name, age=age))
相同点和区别:
-
各种方法都能实现字符串插值,但各有优缺点。
-
% 操作符较为古老,可读性较差。
-
str.format() 功能更强大,支持更多格式化选项。
-
f-string 最简洁高效,但需要 Python 3.6+。
-
模板字符串安全性最高,适合处理用户输入。
注意事项:
-
选择合适的方法取决于你的需求和 Python 版本。推荐使用 f-string,如果需要更高的安全性,则考虑模板字符串。
-
注意不同方法的语法差异。
更深层的理解和拓展知识:
-
格式化规范: % 操作符、str.format() 和 f-string 都支持丰富的格式化规范,例如控制精度、宽度、对齐方式等。可以参考 Python 官方文档了解更多细节。例如:
pi = 3.141592653589793
print(f"Pi is approximately {pi:.2f}") # 输出: Pi is approximately 3.14
-
`str.format()` 的高级用法: 支持更复杂的格式化操作,例如访问字典和列表元素。
data = {'name': 'Eve', 'age': 20}
print("My name is {data[name]} and I am {data[age]} years old.".format(data=data))
-
安全性: 当处理用户提供的字符串时,使用模板字符串可以避免一些安全风险,例如代码注入。
通过以上分析,相信你对 Python 字符串插值有了更全面的理解,能够在面试中展现你的扎实功底。