[智能体-172]:Python的模板概述、语法、使用方法、示例
2026/6/1 22:52:02 网站建设 项目流程

Python 模板主要用于动态拼接文本、HTML、配置内容,分为内置字符串模板(无需额外安装)和第三方专业模板引擎,下面按类别梳理语法、用法、实战示例。


一、内置字符串模板(原生,全 Python 环境可用)

1.f-string格式化字符串(Python 3.6+ 首选)

特点

语法简洁、执行效率高,日常字符串拼接最推荐

基础语法

python

运行

f"普通文本 {变量/表达式/函数} 普通文本"

示例

python

运行

# 1. 基础变量 name = "小明" age = 22 print(f"姓名:{name},年龄:{age}") # 2. 表达式运算 a, b = 15, 5 print(f"相加:{a+b},相除:{a/b:.2f}") # :.2f 保留2位小数 # 3. 调用函数 def hello(): return "Hello Python" print(f"输出:{hello()}") # 4. 字典取值 user = {"nick": "阿白", "score": 98} print(f"昵称:{user['nick']},分数:{user['score']}")

输出

plaintext

姓名:小明,年龄:22 相加:20,相除:3.00 输出:Hello Python 昵称:阿白,分数:98

2. str.format () 方法(兼容性强,通用方案)

语法分类

  1. 无序号占位:{}
  2. 索引占位:{0} {1}
  3. 关键字占位:{key}

示例

python

运行

# 1. 顺序传参 print("姓名:{},城市:{}".format("小李", "北京")) # 2. 索引匹配 print("{1} 来自 {0}".format("上海", "小张")) # 3. 关键字传参(可读性高) print("姓名:{name},年龄:{age}".format(name="小王", age=25)) # 4. 字典解包传参 data = {"title": "笔记", "num": 10} print("文档:{title},数量:{num}".format(**data)) # 5. 数字格式化 print("圆周率:{:.3f}".format(3.14159))

输出

plaintext

姓名:小李,城市:北京 小张 来自 上海 姓名:小王,年龄:25 文档:笔记,数量:10 圆周率:3.142

3. % 占位符(老式语法,兼容老旧代码)

常用占位符

  • %s字符串
  • %d整数
  • %f浮点数

示例

python

运行

# 单变量 print("用户名:%s" % "test") # 多变量(元组传值) name = "小美" age = 20 print("姓名:%s,年龄:%d" % (name, age)) # 小数格式化 print("价格:%.2f 元" % 66.889)

输出

plaintext

用户名:test 姓名:小美,年龄:20 价格:66.89 元

4. string.Template 标准库模板(安全替换)

适用场景

配置文件、外部文本、用户输入场景,安全性高,语法为$变量名

语法

python

运行

from string import Template # 1. 定义模板 tpl = Template("文本 $变量 文本") # 2. 渲染 tpl.substitute(字典/关键字参数) # 缺参数直接报错 tpl.safe_substitute() # 缺参数保留原$符号,不报错

示例

python

运行

from string import Template # 定义模板 t = Template("账号:$user,密码:$pwd") # 正常替换 info = {"user": "admin", "pwd": "123456"} res1 = t.substitute(info) print(res1) # 安全替换(缺少pwd参数) res2 = t.safe_substitute(user="guest") print(res2)

输出

plaintext

账号:admin,密码:123456 账号:guest,密码:$pwd

二、Jinja2 模板引擎(Web / 复杂模板首选)

功能最强,支持判断、循环、过滤器、模板继承,Flask、FastAPI、邮件模板、静态页面大量使用。

1. 环境安装

bash

运行

pip install jinja2

2. 三大核心语法标记

语法作用
{{ 变量/表达式 }}输出内容
{% 控制语句 %}循环、判断、代码块
{# 注释内容 #}模板注释(渲染后不显示)

3. 基础用法 + 完整示例

示例 1:变量输出与注释

python

运行

from jinja2 import Template # 模板字符串 html = """ {# 这是模板注释,不会被渲染 #} <h2>欢迎 {{ username }}</h2> <p>等级:{{ level }}</p> """ # 渲染模板 t = Template(html) result = t.render(username="游客", level=5) print(result)

示例 2:条件判断if / elif / else

python

运行

from jinja2 import Template tpl = """ {% if score >= 90 %} 优秀 {% elif score >= 60 %} 及格 {% else %} 不及格 {% endif %} """ t = Template(tpl) print(t.render(score=78))

示例 3:循环遍历for

内置loop变量:loop.index(从 1 开始序号)、loop.first/loop.last(首尾判断)

python

运行

from jinja2 import Template # 遍历列表 t1 = """ {% for item in goods %} - {{ loop.index }}:{{ item }} {% endfor %} """ print(Template(t1).render(goods=["手机", "电脑", "耳机"])) # 遍历字典 t2 = """ {% for k, v in user.items() %} {{ k }}:{{ v }} {% endfor %} """ print(Template(t2).render(user={"name": "张三", "gender": "男"}))

示例 4:过滤器|(数据格式化)

常用过滤器:upper/lower/length/default/round

python

运行

from jinja2 import Template tpl = """ 姓名:{{ name|default("匿名") }} 大写:{{ text|upper }} 文本长度:{{ text|length }} 金额:{{ money|round(1) }} """ t = Template(tpl) print(t.render(text="hello jinja2", money=99.123))

示例 5:模板继承(页面复用,Web 核心)

使用block定义可重写区块,实现头部、底部全局复用。

python

运行

from jinja2 import Environment, DictLoader # 1. 父模板(公共页面) base_html = """ <html> <head> <title>{% block title %}默认标题{% endblock %}</title> </head> <body> <div>公共头部</div> <div>{% block content %}主体内容{% endblock %}</div> <div>公共底部</div> </body> </html> """ # 2. 子模板:继承并重写区块 child_html = """ {% extends "base" %} {% block title %}首页{% endblock %} {% block content %} <h3>这是首页专属内容</h3> """ # 加载并渲染 loader = DictLoader({"base": base_html}) env = Environment(loader=loader) t = env.from_string(child_html) print(t.render())

三、各类模板选型总结

模板类型适用场景优点
f-string普通字符串拼接、简单输出语法简单、速度最快
format()多变量拼接、需要兼容低版本 Python兼容性好、语义清晰
% 占位符维护老旧项目历史语法,少用于新项目
string.Template配置文件、外部文本、安全替换防注入、使用简单
Jinja2HTML 页面、邮件、复杂动态模板支持循环 / 判断 / 继承,功能强大

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询