f-string
在Python中,print(f’') 是一种格式化字符串的便捷方式,称为 f-string(格式化字符串字面量)。f-string 是在 Python 3.6 中引入的,它提供了一种非常直观和高效的方法来嵌入表达式到字符串字面量中。
基本语法
f-string 的基本语法非常简单,只需在字符串前加上一个小写的 f 或大写的 F,然后在字符串内部使用花括号 {} 来包含变量或表达式。例如:
name = "Alice"
age = 30
print(f"Name: {name}, Age: {age}")
#输出结果:Name: Alice, Age: 30
使用变量
你可以直接在花括号中放入变量名,f-string 会自动将其值转换为字符串并插入到相应的位置。
greeting = "Hello"
target = "World"
print(f"{greeting}, {target}!")
#输出结果:Hello, World!
使用表达式
不仅限于变量,你还可以在花括号中放入任何有效的Python表达式,包括算术运算、函数调用等。
算术运算
a = 5
b = 10
# 进行算术运算
print(f"Sum: {a + b}, Difference: {a - b}, Product: {a * b}, Quotient: {a / b}")
# 运行结果: Sum: 15, Difference: -5, Product: 50, Quotient: 0.5
函数调用
def greet(name):
return f"Hello, {name}!"
# 调用函数
print(f"{greet('Bob')}")
# 运行结果: Hello, Bob!
条件表达式
score = 85
# 使用条件表达式
print(f"Grade: {'A' if score >= 90 else 'B' if score >= 80 else 'C'}")
# 运行结果: Grade: B
列表推导式
numbers = [1, 2, 3, 4, 5]
# 使用列表推导式
print(f"Squares: {[x**2 for x in numbers]}")
# 运行结果: Squares: [1, 4, 9, 16, 25]
字典推导式
keys = ['a', 'b', 'c']
values = [1, 2, 3]
# 使用字典推导式
print(f"Dictionary: {{k: v for k, v in zip(keys, values)}}")
# 注意:在f-string中,大括号需要被双写来避免被解释为格式化占位符
# 运行结果: Dictionary: {'a': 1, 'b': 2, 'c': 3}
集合推导式
numbers = [1, 2, 2, 3, 4, 4, 5]
# 使用集合推导式
print(f"Unique numbers: {{{x for x in numbers}}}")
# 注意:在f-string中,大括号需要被双写
# 运行结果: Unique numbers: {1, 2, 3, 4, 5}
Lambda 表达式
# 使用lambda表达式
print(f"Result of lambda: {((lambda x: x * x)(5))}")
# 运行结果: Result of lambda: 25
使用大括号 {}
如果你想在 f-string 中直接打印大括号,你需要将它们进行转义,即使用两个大括号 {{ 或 }}。
print(f"Braces: {{ }}")
#输出结果:Braces: { }
格式化数字
f-string 还支持使用冒号 : 后跟格式说明符来格式化数字。例如,控制小数点后的位数、填充字符、对齐方式等。
pi = 3.141592653589793
print(f"Pi: {pi:.2f}") # 保留两位小数
print(f"Pi: {pi:10.2f}") # 总宽度为10,保留两位小数,右对齐
print(f"Pi: {pi:010.2f}") # 总宽度为10,保留两位小数,右对齐,用0填充
输出是:
Pi: 3.14
Pi: 3.14
Pi: 0000003.14
使用 .format() 方法的对比
在 f-string 之前,Python 使用 .format() 方法来格式化字符串。f-string 提供了更清晰、更简洁的语法,尤其是在需要嵌入多个变量或表达式时。
# 使用 .format()
name = "Alice"
age = 30
print("Name: {}, Age: {}".format(name, age))
# 使用 f-string
print(f"Name: {name}, Age: {age}")
两者输出相同,但 f-string 更直观易读。
注意事项
- f-string 只能在 Python 3.6 及以上版本中使用。
- f-string 提供了比 % 操作符和 .format() 方法更强大、更灵活的字符串格式化功能。