[智能体-164]:Python 语法:结构化 与 格式化 完整区分 + 方法 + 示例
先明确核心定义再分模块讲解各类语法、用法、场景最后结合你之前学的 LangChain 做关联对照。一、核心概念区分1. 格式化Format核心变量填充、文本拼接将动态数据 / 变量嵌入固定文本模板生成完整字符串。关注点占位符、变量替换、排版美化、数据转文本。2. 结构化Structure核心定义数据 / 代码的组织形态、层级、规则对数据、代码、逻辑做分层、分类、固定格式约束规定「长什么样、如何组织」。关注点层级、字段、类型、语法结构、数据模型。一句话记忆格式化 填内容结构化 定框架二、Python字符串格式化全部主流方法用于文本变量填充法对应「格式化」范畴。1. f-string 格式化Python3.6 首选最简、性能最高占位符{变量名}。语法python运行变量 值 f字符串 {变量/表达式}示例python运行name 小明 age 20 # 基础填充 s1 f姓名{name}年龄{age} print(s1) # 支持表达式、运算 a, b 10, 20 s2 f求和{a b} print(s2) # 格式控制保留小数、对齐 pi 3.14159 s3 f圆周率{pi:.2f} # 保留2位小数 print(s3)2.str.format()格式化兼容性最好占位符{变量名}LangChain PromptTemplate 底层同源。语法python运行# 位置传参 {变量名1} {变量名2}.format(值1, 值2) # 关键字传参推荐 {key1} {key2}.format(key1值1, key2值2)示例python运行# 关键字传参和 LangChain 传参逻辑一致 s 语言{lang}内容{text}.format(langPython, text格式化) print(s)3. % 旧式格式化老式不推荐新项目语法python运行字符串 %类型 % 变量示例python运行name 测试 s 名称%s % name print(s)4.string.Template标准库模板占位符$变量适合外部文件、配置模板。示例python运行from string import Template tpl Template(工具$tool用途$usage) res tpl.substitute(toolLangChain, usage大模型开发) print(res)格式化转义规则重点如果想输出字面{}需要双大括号转义python运行# f-string / format / LangChain 通用 s f字面大括号{{name}}变量{name} print(s)三、Python结构化语法分两大块数据结构化 代码结构化一数据结构化定义数据组织形式把零散数据按照固定结构、字段、类型封装便于统一读写、传递、解析。1. 基础内置结构化类型1.1 字典 dict键值对结构最常用固定key: value结构常用于接口、模板传参、JSON 数据。python运行# 结构化数据固定字段 # 定义字典变量user并初始化 user { name: 小红, age: 22, hobby: [读书, 运动] } # 按固定字段取值 print(user[name], user[age])1.2 列表 list / 元组 tuple有序数组结构固定有序集合结构。python运行arr [10, 20, 30] # 有序可变结构 t (1, 2, 3) # 有序不可变结构1.3 JSON 结构跨语言通用结构化本质是字典 / 列表的字符串形态接口、大模型输出标准格式。python运行import json # Python字典 → JSON字符串结构化输出 # python字典 data {name: 张三, age: 25} # json字符串 json_str json.dumps(data, ensure_asciiFalse) print(json_str) # JSON字符串 → Python字典解析结构化数据 # JSON字符串 parse_data json.loads(json_str) #Python字典 print(parse_data[name])2. 强类型结构化dataclasses / Pydantic工程级结构化企业级首选强制字段名、数据类型、字段说明对应 LangChain 输出结构化。2.1 dataclassesPython 标准库“类”python运行from dataclasses import dataclass # 定义一个““类” dataclass class User: name: str # 类成员 age: int # 类成员 city: str # 类成员 # 实例化一个类对象 标准结构化对象 u User(name小李, age24, city北京) print(u.name, u.age)2.2 PydanticLangChain 专用强校验约束类型、描述、默认值用于模型输出结构化解析。python运行from pydantic import BaseModel, Field from typing import List # 定义结构化模型固定字段类型描述 class Student(BaseModel): name: str Field(description学生姓名) score: float Field(description分数) tags: List[str] Field(description标签列表) # 自动校验结构与类型 stu Student(name小王, score90.5, tags[优秀, 理科]) print(stu.dict()) # 转为字典二代码结构化代码语法结构、执行流程规定代码的层级、缩进、逻辑块、执行顺序Python 靠缩进实现强制结构化。1. 分支结构if /elif/else固定条件判断代码块结构python运行score 80 if score 90: print(优秀) elif score 60: print(及格) else: print(不及格)2. 循环结构for /while固定循环代码块结构python运行# for 有序遍历结构 for i in range(3): print(i)3. 函数结构def固定「函数名 参数 函数体 返回值」结构封装逻辑。python运行# 标准函数结构化 def add(a: int, b: int) - int: return a b4. 类结构class面向对象核心结构化封装属性与方法分层管理代码。python运行class Cat: # 属性结构化成员变量 name: str # 方法结构化成员函数 def run(self): print(小猫奔跑)5. 代码块与缩进Python 独有强制结构化Python不靠大括号靠缩进区分代码块缩进必须统一4 空格 / 1 制表符语法强制结构化。四、格式化 结构化 组合使用实战场景场景 1结构化数据 → 格式化输出先用字典 / Pydantic 组织结构化数据再用 f-string/format格式化拼接字符串。python运行# 1. 数据结构化字典 user_info {name: 小张, age: 26, job: 工程师} # 2. 文本格式化填充变量 text f姓名{user_info[name]}年龄{user_info[age]}职业{user_info[job]} print(text)场景 2模板结构化 变量格式化对应 LangChain结构化设计提示词固定框架、角色、段落格式化使用{变量}填充动态内容python运行# 1. 结构化模板固定段落结构 template 【角色】{role} 【问题】{question} 【回答要求】分两点作答 # 2. 格式化填充变量 content template.format(role数学老师, question什么是勾股定理) print(content)场景 3格式化文本 → 解析为结构化数据自由文本 → 格式化规范输出 → 转为字典 / 对象结构化数据LangChain 输出解析。五、方法汇总表1. 格式化方法变量填充方法占位符特点f-string{var}简洁高效推荐首选str.format(){var}兼容性强LangChain 同源% 格式化%s %d老旧不推荐string.Template$var配置 / 文件模板专用2. 结构化方法框架 / 数据 / 代码数据结构化基础dict、list、tuple、JSON强类型dataclass、Pydantic.BaseModel代码结构化流程结构if分支、for/while循环封装结构def函数、class类语法约束缩进Python 强制结构化六、和 LangChain 关联总结衔接你之前的知识点PromptTemplate / ChatPromptTemplate内部使用 Pythonstr.format()格式化语法{变量}模板本身做提示词结构化角色、段落、指令框架。OutputParserJson/Pydantic接收模型文本解析为dict / Pydantic 对象属于输出数据结构化。LCEL 管道|将组件按顺序串联属于执行流程结构化。Runnable 系列统一输入输出字典结构属于链路数据结构化。