Python f-string 格式化字符串字面量
所属分类 quant
浏览量 16
Python f-string 格式化字符串字面量 ,Python 3.6+ 引入
f-string是Python中目前最推荐的字符串格式化方式,
因为它结合了简洁性、可读性和强大功能于一体。
更简洁直观 性能更好 可读性更强 支持复杂表达式
对比其他格式化方式
# 1. % 格式化(旧式)
print("name=%s, age=%d" % (name, age))
# 2. str.format() 方法(Python 2.6+)
print("name={}, age={}".format(name, age))
# 3. f-string(Python 3.6+,推荐)
print(f"name={name}, age={age}")
f-string 特性
基本用法
name = "张三"
age = 25
print(f"name={name}, age={age}")
# 输出: name=张三, age=25
1. 表达式求值
# 直接嵌入表达式
a, b = 10, 20
print(f"a + b = {a + b}") # a + b = 30
print(f"平均值: {(a + b) / 2:.2f}") # 平均值: 15.00
# 调用函数
def get_score():
return 95
print(f"分数: {get_score()}") # 分数: 95
# 调用方法
text = "hello world"
print(f"大写: {text.upper()}") # 大写: HELLO WORLD
2. 数字格式化
num = 1234.56789
# 保留小数位
print(f"保留2位小数: {num:.2f}") # 1234.57
# 宽度和对齐
print(f"右对齐10位: |{num:>10.2f}|") # | 1234.57|
print(f"左对齐10位: |{num:<10.2f}|") # |1234.57 |
print(f"居中对齐: |{num:^12.2f}|") # | 1234.57 |
# 千位分隔符
large_num = 1234567.89
print(f"千位分隔: {large_num:,.2f}") # 1,234,567.89
# 百分比
ratio = 0.875
print(f"百分比: {ratio:.2%}") # 87.50%
# 科学计数法
small_num = 0.00012345
print(f"科学计数: {small_num:.2e}") # 1.23e-04
# 整数格式
int_num = 42
print(f"二进制: {int_num:#b}") # 0b101010
print(f"八进制: {int_num:#o}") # 0o52
print(f"十六进制: {int_num:#x}") # 0x2a
print(f"前导零: {int_num:04d}") # 0042
3. 日期时间格式化
from datetime import datetime
now = datetime.now()
# 基本格式化
print(f"当前时间: {now:%Y-%m-%d %H:%M:%S}") # 2023-10-20 14:30:25
print(f"日期: {now:%Y年%m月%d日}") # 2023年10月20日
# 各种格式
print(f"完整日期: {now:%c}") # Fri Oct 20 14:30:25 2023
print(f"12小时制: {now:%I:%M %p}") # 02:30 PM
print(f"星期几: {now:%A}") # Friday
print(f"月份全称: {now:%B}") # October
print(f"一年中的第几天: {now:%j}") # 293
4. 高级特性
# 字典访问
user = {"name": "李四", "age": 30}
print(f"用户: {user['name']}, 年龄: {user['age']}")
# 列表访问
scores = [85, 90, 78]
print(f"最高分: {max(scores)}")
# 嵌套f-string
width = 10
precision = 2
value = 12.345
print(f"结果: {value:{width}.{precision}f}") # 结果: 12.35
# 条件表达式
score = 85
print(f"等级: {'优秀' if score >= 90 else '良好' if score >= 80 else '及格'}")
# 调试模式(Python 3.8+)
name = "王五"
print(f"{name=}") # name='王五'
print(f"{score * 2=}") # score * 2=170
5. 多行f-string
message = (
f"用户信息:\n"
f" 姓名: {name}\n"
f" 年龄: {age}\n"
f" 得分: {score}"
)
print(message)
上一篇
下一篇
123法则 2B法则 N字结构 量化思路
N字价格运动与结构
基于深度学习和计算机视觉的K线图交易信号识别
python3 实用代码2
《走进我的交易室》精华笔记