Python中print函数的5大实用技巧与场景解析

张开发
2026/5/23 6:06:25 15 分钟阅读
Python中print函数的5大实用技巧与场景解析
1. 基本输出从Hello World到实战应用print函数是每个Python初学者接触的第一个函数那句经典的Hello World几乎成了编程入门的仪式感。但你可能不知道这个看似简单的函数背后藏着不少实用技巧。先来看最基本的用法print(Hello World) # 输出字符串 print(42) # 输出数字 print(3.14) # 输出浮点数在实际项目中我经常用print来做快速调试。比如检查变量值时直接print比打断点更高效。特别是在处理复杂数据结构时user_data { name: 张三, age: 28, skills: [Python, SQL, Django] } print(用户数据:, user_data)这里有个小技巧打印多个变量时可以用逗号自动添加空格分隔。有次我调试一个爬虫程序就是靠这个特性快速定位了问题字段response_code 200 response_time 1.23 print(状态码:, response_code, 响应时间:, response_time, 秒)2. 多对象打印的艺术print函数最实用的特性之一就是能同时输出多个对象。记得我刚学Python时经常用加号拼接字符串后来发现直接用逗号更优雅# 新手写法 print(用户 name 的年龄是 str(age) 岁) # 进阶写法 print(用户, name, 的年龄是, age, 岁)在数据分析时这个特性特别有用。比如处理CSV文件时可以这样输出多列数据import csv with open(data.csv) as f: reader csv.reader(f) for row in reader: print(日期:, row[0], 销售额:, row[1], 增长率:, row[2])我做过一个电商数据分析项目需要同时输出商品ID、名称和价格。用多对象打印配合f-string代码既简洁又易读products [ {id: 101, name: 无线鼠标, price: 129}, {id: 102, name: 机械键盘, price: 299} ] for product in products: print(fID:{product[id]}, 商品:, product[name], 价格:, product[price])3. 格式化输出的三种武器Python提供了多种字符串格式化方法各有适用场景。最传统的是%操作符类似C语言的printfname 李四 score 95.5 print(学生%s的考试成绩是%.1f分 % (name, score))但在Python 3.6之后f-string成为了我的首选。它直接在字符串内嵌入表达式可读性极佳print(f学生{name}的考试成绩是{score:.1f}分)format方法也很强大特别适合需要复用模板的情况。我做报表生成时经常这样用template 截至{date}{department}部门完成{progress:.0%}的季度目标 print(template.format(date2023-06-30, department市场部, progress0.75))实际项目中我建议根据场景选择简单变量f-string最直观复用模板format更合适兼容旧代码%操作符4. 文件写入的实用技巧很多人不知道print可以直接写入文件这比openwrite组合方便多了。我在写日志系统时就经常用这个特性with open(app.log, a) as log_file: print(2023-07-20 14:30:00 用户登录成功, filelog_file)更实用的是可以同时输出到控制台和文件。比如开发数据清洗脚本时def process_data(data): with open(process.log, a) as log: print(开始处理数据..., filelog) print(开始处理数据...) # 同时输出到控制台 # 处理逻辑 result data * 2 print(f处理完成结果:{result}, filelog) print(f处理完成结果:{result}) return result注意文件模式要用a(追加)而不是w(覆盖)否则每次运行都会清空日志。这个坑我踩过好几次。5. 结束符控制的妙用print默认在结尾加换行符但通过end参数可以改变这个行为。这在制作进度条时特别有用import time print(下载进度:, end) for i in range(1, 101): print(f {i}%, end) time.sleep(0.1) print(\b*4, end, flushTrue) print() # 最后补一个换行另一个实用场景是避免密码输入时的换行import getpass print(请输入密码:, end ) password getpass.getpass()在爬虫开发中我常用这个特性保持状态信息在同一行更新for page in range(1, 11): print(f正在抓取第{page}页..., end\r) # 抓取逻辑 time.sleep(1) print(抓取完成 *20) # 清除残留字符记住flush参数也很重要。默认情况下print会缓冲输出在实时日志场景中需要强制刷新print(警告: 磁盘空间不足!, flushTrue)

更多文章