f-strings
(格式化字符串)是 Python 3.6 引入的一种格式化字符串的方式,使用 f
或 F
前缀,将表达式直接嵌入字符串中,并自动进行格式化。f-strings
就像一个灵活的模板,你可以在模板中插入变量和表达式,生成最终结果。
f-strings
基本用法
在 f-strings
中,使用花括号 {}
包裹表达式,Python 会自动将表达式计算结果插入到字符串中,比如下面这个例子:
name = "Alice" age = 30 greeting = f"Hello, {name}! You are {age} years old." print(greeting) # 输出: Hello, Alice! You are 30 years old.
f
前缀告诉 Python 这是一个格式化字符串,{name}
和 {age}
中的变量会被自动替换为其值。
f-strings
支持任意表达式,如计算、函数调用、列表索引等,如下所示:
import math radius = 5 area = f"The area of a circle with radius {radius} is {math.pi * radius ** 2:.2f}" print(area) # 输出: The area of a circle with radius 5 is 78.54
上面代码中我们在 f-strings
中嵌入计算表达式,并使用 :.2f
指定保留两位小数。
注意我们在 {}
中指定了 :
,这个是用来进行格式化控制的,:
后面跟着格式化规范,比如保留小数位数、日期格式化、货币格式化等,
price = 1234.5678 formatted = f"${price:,.2f}" print(formatted) # 输出: $1,234.57
这里我们使用 :,
插入千位分隔符,使用 .2f
保留两位小数,生成格式化的货币表示。
对于字符串我们还可以使用 str.format()
和 %
操作符进行格式化,但是相比之下 f-strings
更加简洁和直观,代码可读性更高,如下所示:
name = "Alice" age = 30 greeting = "Hello, {}! You are {} years old.".format(name, age) # {} 为占位符 print(greeting) # 输出: Hello, Alice! You are 30 years old.
上面代码中我们通过 str.format()
方法格式化字符串,将变量传递给占位符 {}
,生成最终结果。除了使用 {}
占位符外,我们还可以使用 %
操作符进行格式化,如下所示:
name = "Alice" age = 30 greeting = "Hello, %s! You are %d years old." % (name, age) print(greeting) # 输出: Hello, Alice! You are 30 years old.
无论是使用 str.format()
方法还是 %
操作符,都需要传递参数给占位符,相对而言 f-strings
更加简洁和直观,是 Python 中推荐的字符串格式化方式。
name = "Alice" age = 30 greeting = f"Hello, {name}! You are {age} years old." print(greeting) # 输出: Hello, Alice! You are 30 years old.
我们只需要在 f-strings
中直接将变量和表达式嵌入字符串中,避免了格式化方法中的参数传递和占位符,代码更加简洁和易读。
此外我们还可以使用 f-strings
格式化多行字符串,如下所示:
name = "Alice" age = 30 message = f""" Name: {name} Age: {age} """ print(message)
上面代码中我们使用三引号("""
)创建多行 f-strings
,便于输出多行内容。
在使用 f-strings
时我们应该尽量保持简单明了,避免复杂的嵌套表达式。还需要注意避免在 f-strings
中直接插入用户输入,防止安全漏洞。
# 安全处理用户输入 user_input = "<script>alert('XSS');</script>" safe_message = f"User input: {user_input!r}" # 使用 `!r` 转义特殊字符 print(safe_message)
使用 !r
转义特殊字符,避免直接插入用户输入引发的安全问题。
f-strings
常用场景
f-strings
在日志记录、生成动态 SQL 查询、处理文件路径等场景中有广泛应用。
日志记录
import datetime username = "user123" timestamp = datetime.datetime.now() log_message = f"[{timestamp:%Y-%m-%d %H:%M:%S}] User '{username}' logged in." print(log_message)
上面代码中使用 f-strings
格式化日志消息,包括时间戳和用户名。
生成动态 SQL 查询
table = "users" column = "age" value = 30 query = f"SELECT * FROM {table} WHERE {column} > {value}" print(query)
使用 f-strings
动态生成 SQL 查询,插入表名、列名和条件值。
文件路径处理
filename = "data" extension = "txt" filepath = f"/path/to/{filename}.{extension}" print(filepath)
使用 f-strings
拼接文件路径,生成完整的文件名和路径。
f-strings
是 Python 中一种简洁、直观的字符串格式化方式,可以帮助我们快速生成格式化的字符串,提高代码的可读性和可维护性,希望大家能够通过这些例子,更好的理解 f-strings
的概念和用法。