Python F 字符串
外观
Python F-字符串[编辑 | 编辑源代码]
F-字符串(Formatted String Literals)是Python 3.6引入的一种字符串格式化方法,它提供了一种简洁、直观的方式来嵌入表达式到字符串中。F-字符串以字母`f`或`F`为前缀,并使用大括号`{}`包含表达式,这些表达式会在运行时被求值并替换为对应的值。
基本语法[编辑 | 编辑源代码]
F-字符串的基本语法如下:
f"字符串内容{表达式}字符串内容"
其中,`表达式`可以是变量、算术运算、函数调用等任何有效的Python表达式。
示例[编辑 | 编辑源代码]
name = "Alice"
age = 25
print(f"My name is {name} and I am {age} years old.")
输出:
My name is Alice and I am 25 years old.
表达式求值[编辑 | 编辑源代码]
F-字符串中的表达式会在运行时被求值,这意味着可以在大括号内执行计算或调用函数。
示例[编辑 | 编辑源代码]
a = 5
b = 10
print(f"The sum of {a} and {b} is {a + b}.")
输出:
The sum of 5 and 10 is 15.
格式化选项[编辑 | 编辑源代码]
F-字符串支持多种格式化选项,可以通过在表达式后添加冒号`:`来指定格式。
数字格式化[编辑 | 编辑源代码]
pi = 3.1415926535
print(f"Pi rounded to 2 decimal places: {pi:.2f}")
输出:
Pi rounded to 2 decimal places: 3.14
对齐与填充[编辑 | 编辑源代码]
name = "Bob"
print(f"{name:>10}") # 右对齐,宽度为10
print(f"{name:<10}") # 左对齐,宽度为10
print(f"{name:^10}") # 居中对齐,宽度为10
输出:
Bob Bob Bob
实际应用案例[编辑 | 编辑源代码]
日志记录[编辑 | 编辑源代码]
F-字符串非常适合用于日志记录,因为它可以方便地嵌入变量和表达式。
user = "admin"
action = "login"
time = "12:30"
print(f"[{time}] User '{user}' attempted to {action}.")
输出:
[12:30] User 'admin' attempted to login.
动态SQL查询[编辑 | 编辑源代码]
在数据库操作中,F-字符串可以用于构建动态SQL查询(注意:在实际应用中应使用参数化查询以防止SQL注入)。
table = "users"
column = "name"
value = "Alice"
query = f"SELECT * FROM {table} WHERE {column} = '{value}'"
print(query)
输出:
SELECT * FROM users WHERE name = 'Alice'
高级用法[编辑 | 编辑源代码]
嵌套大括号[编辑 | 编辑源代码]
如果需要在大括号内包含字面量的大括号,可以使用双大括号`模板:`或``。
print(f"{{This is in braces}}")
输出:
{This is in braces}
多行F-字符串[编辑 | 编辑源代码]
F-字符串可以跨越多行,使用三引号`"""`或``。
name = "Charlie"
message = f"""
Hello {name},
Welcome to our platform!
"""
print(message)
输出:
Hello Charlie, Welcome to our platform!
调用函数和方法[编辑 | 编辑源代码]
可以在F-字符串中直接调用函数或方法。
def greet(name):
return f"Hello, {name}!"
user = "Dave"
print(f"{greet(user)} How are you?")
输出:
Hello, Dave! How are you?
性能比较[编辑 | 编辑源代码]
F-字符串在性能上通常优于其他字符串格式化方法(如`%`格式化或`str.format()`),因为它们在编译时被转换为字节码,而不是在运行时解析。
性能测试示例[编辑 | 编辑源代码]
import timeit
# 使用 % 格式化
time_percent = timeit.timeit('"Name: %s, Age: %d" % ("Alice", 25)', number=100000)
# 使用 str.format()
time_format = timeit.timeit('"Name: {}, Age: {}".format("Alice", 25)', number=100000)
# 使用 f-string
time_fstring = timeit.timeit('f"Name: {"Alice"}, Age: {25}"', number=100000)
print(f"% formatting: {time_percent:.6f}")
print(f"str.format(): {time_format:.6f}")
print(f"f-string: {time_fstring:.6f}")
输出(示例):
% formatting: 0.012345 str.format(): 0.014567 f-string: 0.008901
总结[编辑 | 编辑源代码]
F-字符串是Python中一种强大且高效的字符串格式化工具,适用于从简单到复杂的各种场景。它们不仅语法简洁,而且性能优越,是Python 3.6及以上版本推荐使用的字符串格式化方法。