当前位置: 首页 > backend >正文

字符串(格式化字符串字面值)进行输出

在 Python 中,print(f'new_obs:{new_obs}') 这种形式是使用 f 字符串(格式化字符串字面值) 进行输出,它可以打印 任何可转换为字符串的数据类型,并且支持在字符串中嵌入表达式。以下是详细说明:

1. 基本功能:打印变量值

  • 核心作用:将变量 new_obs 的值以字符串形式输出,并与固定文本(如 new_obs:)拼接。
  • 支持的数据类型
    可以是任意 Python 数据类型,包括:
    • 基础类型:整数、浮点数、字符串、布尔值(int/float/str/bool)。
    • 容器类型:列表、元组、字典、集合(list/tuple/dict/set)。
    • 自定义对象:类的实例(会调用对象的 __str__ 方法获取字符串表示)。
示例:
# 基础类型
num = 42
print(f'数字:{num}')  # 输出:数字:42name = "Alice"
print(f'名字:{name}')  # 输出:名字:Alice# 容器类型
grades = [90, 85, 95]
print(f'成绩:{grades}')  # 输出:成绩:[90, 85, 95]student = {"name": "Bob", "age": 20}
print(f'学生信息:{student}')  # 输出:学生信息:{'name': 'Bob', 'age': 20}# 自定义对象
class Person:def __init__(self, name):self.name = namedef __str__(self):return f"Person({self.name})"p = Person("Charlie")
print(f'对象:{p}')  # 输出:对象:Person(Charlie)

2. 进阶功能:嵌入表达式

f 字符串中的 {} 不仅可以放变量,还可以放 任意合法的 Python 表达式,例如:

  • 数学运算:{1 + 2 * 3}
  • 函数调用:{len("hello world")}
  • 属性访问:{obj.attr}
  • 条件表达式:{value if condition else default}
示例:
a = 10
b = 20
print(f"{a} + {b} = {a + b}")  # 输出:10 + 20 = 30text = "hello"
print(f"长度:{len(text)}")  # 输出:长度:5score = 85
print(f"等级:{'A' if score >= 90 else 'B'}")  # 输出:等级:B

3. 格式化控制:自定义输出样式

通过在 {} 中添加格式说明符,可以控制输出的格式,例如:

  • 数字的精度、对齐方式、千位分隔符。
  • 字符串的填充、截断。
  • 日期时间的格式化。
示例:
# 浮点数保留 2 位小数
pi = 3.1415926
print(f"π:{pi:.2f}")  # 输出:π:3.14# 数字补零并固定宽度
number = 5
print(f"补零后:{number:03d}")  # 输出:补零后:005# 字典键值对格式化
data = {"name": "Alice", "age": 30}
print(f"用户:{data['name']}, 年龄:{data['age']}岁")  # 输出:用户:Alice, 年龄:30岁

4. 本质:调用 str() 方法

f 字符串中 {expression} 的本质是将表达式的结果转换为字符串,等价于 str(expression)
对于自定义对象,会调用其 __str__ 方法(若未定义,则调用 __repr__ 方法)。

总结:

print(f'new_obs:{new_obs}') 可以打印:

  • 任何可转换为字符串的数据(基础类型、容器、对象等)。
  • 动态计算的表达式结果(数学运算、函数调用等)。
  • 格式化后的字符串(通过格式说明符控制输出样式)。

它的灵活性和可读性远超传统的 % 格式化和 str.format() 方法,是 Python 中推荐的字符串格式化方式。

http://www.xdnf.cn/news/2960.html

相关文章:

  • Rust 的 Web 世界:actix_web 轻松接收 JSON 请求体
  • 打造美观 API 文档:Spring Boot + Swagger 实战指南
  • C++23 std::byteswap:反转字节 (P1272R4)
  • C#里创建一个TCP客户端连接类
  • 【LeetCode】彩灯装饰记录 III
  • 【运维】使用 DataX 实现 MySQL 到 PostgreSQL 的数据同步
  • 苍穹外卖心得体会
  • [stm32] 4-1 USART(1)
  • 流量控制机制
  • 拆固态硬盘短接开卡+ as ssd benchmark查看硬盘读写速度
  • 基于STM32、HAL库的ADS8866IDGSR模数转换器ADC驱动程序设计
  • 华为云Astro大屏从iotda影子设备抽取数据做设备运行状态的大屏实施步骤
  • Android——Serializable和Parcelable
  • Spring、Spring MVC 与 Spring Boot 的关系与核心用途
  • 什么是全景相机?
  • jenkins slave节点打包报错Failed to create a temp file on
  • Android学习总结之Bitmap篇
  • 《数学物理方程》——第一章 引入与基本概念
  • 【AI工具】DeepWiki试用
  • 第十六届蓝桥杯 C/C++ B组 题解
  • 私有云与虚拟化攻防2(OpenStack渗透场景,大部分云平台都是基于此进行二次开发)
  • C++ 类和对象(3)初始化列表、友元函数、内部类
  • 创龙全志T536全国产(4核A55 ARM+RISC-V+NPU 17路UART)工业开发板硬件说明书
  • 免费IP证书申请
  • leetcode day37 474
  • 【论文阅读】PEEKABOO: Interactive Video Generation via Masked-Diffusion
  • 【神经网络与深度学习】改变随机种子可以提升模型性能?
  • DotNet 入门:(一) 环境安装
  • ElasticSearch入门
  • MYSQL三大日志、隔离级别(MVCC+锁机制实现)