首页  

Python f-string 格式化字符串字面量     所属分类 quant 浏览量 18
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

《走进我的交易室》精华笔记