在 Python 中,print(f'new_obs:{new_obs}')
这种形式是使用 f 字符串(格式化字符串字面值) 进行输出,它可以打印 任何可转换为字符串的数据类型,并且支持在字符串中嵌入表达式。以下是详细说明:
1. 基本功能:打印变量值
- 核心作用:将变量
new_obs
的值以字符串形式输出,并与固定文本(如new_obs:
)拼接。 - 支持的数据类型:
可以是任意 Python 数据类型,包括:- 基础类型:整数、浮点数、字符串、布尔值(
int/float/str/bool
)。 - 容器类型:列表、元组、字典、集合(
list/tuple/dict/set
)。 - 自定义对象:类的实例(会调用对象的
__str__
方法获取字符串表示)。
- 基础类型:整数、浮点数、字符串、布尔值(
示例:
# 基础类型
num = 42
print(f'数字:{num}') # 输出:数字:42name = "Alice"
print(f'名字:{name}') # 输出:名字:Alice# 容器类型
grades = [90, 85, 95]
print(f'成绩:{grades}') # 输出:成绩:[90, 85, 95]student = {"name": "Bob", "age": 20}
print(f'学生信息:{student}') # 输出:学生信息:{'name': 'Bob', 'age': 20}# 自定义对象
class Person:def __init__(self, name):self.name = namedef __str__(self):return f"Person({self.name})"p = Person("Charlie")
print(f'对象:{p}') # 输出:对象:Person(Charlie)
2. 进阶功能:嵌入表达式
f 字符串中的 {}
不仅可以放变量,还可以放 任意合法的 Python 表达式,例如:
- 数学运算:
{1 + 2 * 3}
- 函数调用:
{len("hello world")}
- 属性访问:
{obj.attr}
- 条件表达式:
{value if condition else default}
示例:
a = 10
b = 20
print(f"{a} + {b} = {a + b}") # 输出:10 + 20 = 30text = "hello"
print(f"长度:{len(text)}") # 输出:长度:5score = 85
print(f"等级:{'A' if score >= 90 else 'B'}") # 输出:等级:B
3. 格式化控制:自定义输出样式
通过在 {}
中添加格式说明符,可以控制输出的格式,例如:
- 数字的精度、对齐方式、千位分隔符。
- 字符串的填充、截断。
- 日期时间的格式化。
示例:
# 浮点数保留 2 位小数
pi = 3.1415926
print(f"π:{pi:.2f}") # 输出:π:3.14# 数字补零并固定宽度
number = 5
print(f"补零后:{number:03d}") # 输出:补零后:005# 字典键值对格式化
data = {"name": "Alice", "age": 30}
print(f"用户:{data['name']}, 年龄:{data['age']}岁") # 输出:用户:Alice, 年龄:30岁
4. 本质:调用 str()
方法
f 字符串中 {expression}
的本质是将表达式的结果转换为字符串,等价于 str(expression)
。
对于自定义对象,会调用其 __str__
方法(若未定义,则调用 __repr__
方法)。
总结:
print(f'new_obs:{new_obs}')
可以打印:
- 任何可转换为字符串的数据(基础类型、容器、对象等)。
- 动态计算的表达式结果(数学运算、函数调用等)。
- 格式化后的字符串(通过格式说明符控制输出样式)。
它的灵活性和可读性远超传统的 %
格式化和 str.format()
方法,是 Python 中推荐的字符串格式化方式。