Python 的内置函数 format

作者:IMPYLH日期:2025/11/2

Python 内建函数列表 > Python 的内置函数 format

Python 的内置函数 format() 是一个功能强大的字符串格式化工具,它提供了灵活且可读性强的格式化方式。该函数主要通过两种形式使用:

  1. 作为字符串对象的方法
1"格式化字符串".format(参数)  

这是最常见的用法,在字符串内部使用 {} 作为占位符,然后通过 format() 方法传入参数进行替换。 2. 作为独立的内置函数

1format(value, format_spec)  

这种形式主要用于对单个值进行特定格式的转换,常用于数字格式化等场景。

format() 提供了丰富的格式化功能,包括:

1"{} {}".format("Hello", "World")  # 输出:"Hello World"  
1"{name}今年{age}岁".format(name="小明", age=12)  
1"{0[0]} {0[1]}".format(["Python", "Java"])  # 输出:"Python Java"  
1"{:*^20}".format("Python")  # 居中,用*填充:"*******Python*******"  
2"{:<20}".format("Python")   # 左对齐:"Python              "  
1"{:b}".format(10)  # 二进制:"1010"  
2"{:x}".format(255) # 十六进制:"ff"  
1class Person:  
2    def __init__(self, name, age):  
3        self.name = name  
4        self.age = age  
5p = Person("张三", 30)  
6"{p.name}今年{p.age}岁".format(p=p)  # 输出:"张三今年30岁"  

相比于旧的 % 格式化方式,format() 方法具有以下优势:

  1. 语法更直观,可读性更强
  2. 支持更复杂的格式化需求
  3. 可以灵活处理不同类型的数据
  4. 支持自定义格式化方式(通过 __format__ 方法)

在实际应用中,format() 方法常用于:

  • 生成报告时的数据格式化
  • 日志信息的格式化输出
  • 用户界面的文本显示
  • 数据导出时的格式转换

Python 3.6 之后新增的 f-string(格式化字符串字面量)实际上是 str.format() 方法的语法糖,但提供了更简洁直观的表达方式。它在字符串前缀加上 fF 标志,允许直接在字符串中嵌入表达式,用大括号 {} 包裹。

format() 方法相比,f-string 有以下特点:

  1. 直接在字符串内写变量名或表达式,无需像 format() 那样先定义再引用
  2. 执行效率更高,因为 f-string 在编译时就被转换为字节码
  3. 支持完整 Python 表达式,包括函数调用、算术运算等

示例对比

1# 使用 format() 方法
2name = "Alice"
3age = 25
4msg = "My name is {} and I'm {} years old".format(name, age)
5
6# 使用 f-string
7msg = f"My name is {name} and I'm {age} years old"
8

f-string 还支持格式化规范,如:

1price = 19.99
2print(f"Price: {price:.2f}")  # 输出: Price: 19.99
3
4from datetime import datetime
5print(f"Current time: {datetime.now():%Y-%m-%d %H:%M}")  # 输出当前时间
6

常见应用场景包括:

  • 构建动态 SQL 查询语句
  • 生成日志信息
  • 创建报告模板
  • 调试时快速查看变量值

需要特别注意的是,Python 中的 f-string 是在运行时进行动态求值的表达式。这意味着字符串中的表达式会在程序执行时才会被计算和解析,而不是在编译阶段。这一特性带来了重要的安全考量:

  1. 安全风险具体表现:
    • 如果直接将未经处理的用户输入放入 f-string 表达式,恶意用户可能会注入可执行的Python代码
    • 例如:f"Result: {user_input}",如果user_input是"import(‘os’).system(‘rm -rf /’)",将导致严重后果
  2. 典型应用场景中的风险:
    • 用户输入作为变量名:f"{user_defined_var}"
    • 数据库查询参数:f"SELECT * FROM {table_name}"
    • 文件路径拼接:f"/path/{filename}"
  3. 防御措施:
    • 对用户输入进行严格验证和过滤
    • 使用参数化查询代替字符串拼接
    • 需要处理动态内容时,考虑使用str.format()或%格式化
    • 限制f-string只处理可信的、程序内部生成的变量
  4. 安全使用示例:
1# 不安全的方式  
2user_input = input("Enter value: ")  
3print(f"User entered: {user_input}")  # 潜在危险  
4# 相对安全的方式  
5safe_input = html.escape(user_input)  # 先进行转义处理  
6print(f"User entered: {safe_input}")  

这种运行时求值的特性虽然提供了强大的表达能力,但也要求开发者必须格外注意安全防护措施。


Python 的内置函数 format》 是转载文章,点击查看原文


相关推荐


2025年组件化开发这样做,效率提升300%
良山有风来2025/10/31

你是不是还在重复写着相似的代码?每次产品经理说要改个按钮样式,你都得在几十个文件里翻来翻去?明明是个小改动,却要花大半天时间? 别担心,这篇文章就是来拯救你的。我会带你彻底搞懂现代前端框架的组件化开发,从基础概念到实战技巧,再到2025年的最新趋势。读完本文,你将拥有一套完整的组件化思维,开发效率至少提升3倍! 什么是组件化开发? 简单来说,组件化就是把页面拆分成一个个独立的小模块。就像搭乐高积木一样,每个组件都是独立的积木块,你可以随意组合、重复使用。 想想你每天写的代码,是不是经常遇到这样的


__工艺数据管理的范式转变:金仓数据库替代MongoDB实操实践__
金仓拾光集2025/10/28

——一位资深DBA的国产化迁移手记 作者:小马哥 | 某大型制造企业数据库架构师,10年+核心系统数据库运维与信创改造经验 一、引言:当半结构化工艺数据遇上国产信创浪潮 在智能制造加速推进的今天,工艺数据已成为工厂数字化的核心资产。从设备传感器采集的实时参数,到生产流程中的质检记录、工单变更日志,这些数据往往具有高度的半结构化特征——字段动态变化、嵌套层级深、写入高频且查询复杂。 过去,许多制造企业选择MongoDB作为这类数据的存储引擎,凭借其灵活的BSON文档模型和横向扩展能力,快速响


【2026计算机毕业设计】基于Django的新闻资讯平台的设计与实现
计算机毕业设计小帅2025/10/25

🔍 【关注我,毕业设计不迷茫】| 6年辅导经验 | 帮助1200+学子顺利毕业 |xiaoshuaibishe 大家好,我是程序员小帅,一名专注于计算机毕业设计全流程辅导的技术博主。专注JavaWeb,我深耕毕设领域6年,累计输出1200+原创项目案例,辅导成功率接近100%。如果你正在为选题、代码、论文或答辩发愁,这里能给你最落地的解决方案 一、摘要 21世纪是信息的时代,是网络的时代,进入信息社会高速发展的时代,数字化革命给所有领域带来新的改变。传统的报纸杂志已经远远满足不了人们的需求,人


5G无人机用单兵图传设备 5G单兵图传 无线图传 无人机图传
无线图像传输研究探索2025/10/23

在应急救援、执法执勤等诸多场景中,信息的实时传递与高效沟通至关重要。单兵图传设备作为一种先进的通信工具,正发挥着无可替代的作用。 单兵图传(17354349498) 一、设备概述 WB7000-DB-5G 高清视频终端采用嵌入式系统架构,采用高性能 H.265 编解码处理器设计。设备支持视频采集、编码压缩、传输、双 向对讲功能。 设备基于先进的 H.265 视频编码技术和 5G 无线信道捆绑传输技 术开发的新一代产品。支持支持 5G、4G 网络模式,采用 H.265(HEVC) 超低


谷歌发布首个隐私安全模型VaultGemma
强哥之神2025/10/22

谷歌AI研究团队与DeepMind刚刚发布了 VaultGemma 1B —— 这是目前规模最大的、完全在差分隐私(Differential Privacy, DP)保障下从头训练的开源大语言模型。它不是在已有模型基础上做微调,而是从预训练阶段就嵌入了隐私保护机制。这个尝试,让我觉得有点像在一片风沙中种树——既要长得高,又不能伤根。   我们都知道,现在的LLM(大语言模型)训练数据动辄万亿token,来自整个互联网。但问题也随之而来:模型会“记住”训练数据中的敏感信息,甚至能被攻击者通过提示


校园交友|基于SprinBoot+vue的校园交友网站(源码+数据库+文档)
老华带你飞2025/10/20

校园交友网站 目录 基于SprinBoot+vue的校园交友网站 一、前言 二、系统设计 三、系统功能设计  1系统功能模块 2后台功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计  五、核心代码  六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,CSDN平台Java领域优质创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。✌️ 主要项


使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 18--测试框架Pytest基础 2--插件和参数化
我的xiaodoujiao2025/10/19

测试学习记录,仅供参考! Pytest 框架 七、pytest 丰富的插件系统 可以去安装外部的插件,去使用 pytest 来执行插件;这就是为什么选择使用 pytest 框架的原因,因为 pytest 里面有丰富的插件系统,而 unittest 是没有这些插件的;所以 pytest 要比 unittest 测试框架更加灵活; 例如: 当测试用例很多的时候,可以使用并发执行,可以使用多进程/多线程去执行测试用例,提高测试效率; 测试用例失败重跑插件;在执行测试用例时,由于网络


从零构建量化学习工具:动量策略(Momentum Strategy)
叶梅树2025/10/18

知识点介绍 动量策略是量化交易的核心知识点之一,它基于“强者恒强、弱者恒弱”的市场假设:过去表现好的资产(价格上涨)未来继续上涨,表现差的继续下跌。核心公式:动量 = (当前价 - N期前价) / N期前价(N通常12月/20日)。交易规则:动量>0买入、<0卖出,或排名选TopK股。 优势:简单有效,捕捉趋势(A股牛市强)。缺点:趋势反转时大回撤(如2022熊市)。入门公式:Sharpe比率 = (策略收益 - 无风险率) / 波动率(>1好)。实践:用历史数据回测,结合RSI避超买。 案例说


Jmeter分布式集群搭建与使用
晚笛诶2025/10/16

目录 一、JMeter 简介 核心功能 主要特点 二、JMeter插件扩展安装 三、JMeter分布式集群环境搭建 Jmeter分布式原理: 原理图: 主控机与负载机通信 测试执行流程 环境配置: 配置分布式测试环境 第一种测试机部署在不同的服务器上: 测试机配置: 主控机配置: 第二种测试机通过docker部署在同一台服务器上: 测试机配置: 主控机配置: 一、JMeter 简介 JMeter 是一款开源的性能测试工具,由 Apache 软件基金会


PyQt5 QTreeWidget 深度解析:树形列表框的完整指南
三雷科技2025/10/15

PyQt5 QTreeWidget 深度解析:树形列表框的完整指南 1. QTreeWidget 概述与设计哲学 1.1 什么是 QTreeWidget? QTreeWidget 是 PyQt5 中用于显示层次化数据的高级控件,它继承自 QTreeView,提供了一个基于项目的树形视图。与平面列表不同,QTreeWidget 能够直观地展示父子关系,非常适合文件系统、组织结构、分类数据等层次化信息的展示。 核心设计理念:QTreeWidget 的设计遵循了"层次化数据展示"原则,通过树形

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0