news 2026/5/21 14:16:24

Python print()函数详讲

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python print()函数详讲

Python print() 函数详讲(2025-2026 视角)

print()是 Python 中最常用的输出函数,看似简单,但实际上参数组合非常灵活,掌握它的各种用法能显著提升代码的可读性、调试效率和输出美观度。

1. print() 的基本签名(Python 3.x)

print(*objects,# 要打印的对象(可多个,用逗号分隔)sep=' ',# 对象之间的分隔符,默认空格end='\n',# 结尾字符,默认换行file=None,# 输出到哪里,默认 sys.stdoutflush=False# 是否立即刷新缓冲区)

2. 常用参数详解 + 真实场景

参数默认值作用高频实用场景示例
*objects要打印的内容(可以是任意多个对象,会自动调用 str())print(a, b, c)
sep' '多个对象之间的分隔符print(“姓名”, “年龄”, “城市”, sep="
end'\n'本次 print 结束后追加的字符串(不换行最常用)print(“.”, end=‘’) → 打印进度点不换行
fileNone输出目标(可以是文件对象、StringIO、sys.stderr 等)print(…, file=sys.stderr) → 错误日志
flushFalse是否强制立即刷新缓冲区(True 时不等缓冲区满就输出)长任务实时进度条、日志必须立即看到

3. 经典用法合集(从入门到进阶)

3.1 最基础用法
print("Hello","World")# Hello Worldprint(1,2,3,4)# 1 2 3 4
3.2 控制分隔符(sep)
print("192","168","1","100",sep=".")# 192.168.1.100print("item1","item2","item3",sep=" → ")# item1 → item2 → item3print(*range(1,6),sep=", ")# 1, 2, 3, 4, 5
3.3 不换行输出(end)
# 进度条风格foriinrange(10):print(".",end="",flush=True)# 实时看到点一个一个出现time.sleep(0.3)print()# 最后补个换行
3.4 同时控制 sep 和 end
print("下载中",end=" ")for_inrange(5):print("[■]",end="",sep="")print(" 完成!")
3.5 输出到文件 / 错误流
importsys# 普通输出到文件withopen("log.txt","a",encoding="utf-8")asf:print("警告:温度过高",file=f)# 输出到 stderr(红色高亮,在终端更醒目)print("错误:文件不存在",file=sys.stderr)
3.6 flush 的真实价值(长任务)
# 没有 flush → 可能要等一堆任务结束才一次性看到输出foriinrange(100):print(f"处理{i+1}/100",end="\r",flush=True)time.sleep(0.05)print("\n完成!")

\r+flush=True是最经典的单行覆盖式进度条写法。

4. 格式化输出的几种现代写法对比(print 内部配合)

写法示例代码可读性灵活性推荐场景
老式 %print(“姓名: %s, 年龄: %d” % (name, age))★★☆☆☆★★☆☆☆极老项目
str.format()print(“姓名: {}, 年龄: {:3d}”.format(name, age))★★★☆☆★★★★☆Python 3.0–3.5 时代主流
f-string(首选)print(f"姓名: {name}, 年龄: {age:3d}")★★★★★★★★★★Python 3.6+ 绝对首选
repr / str 手动拼接print(“调试:”, repr(obj))★★★☆☆★★☆☆☆调试复杂对象

强烈推荐写法(2025–2026 主流)

name="张三"age=28score=88.75print(f"{name}今年{age}岁,本次考试{score:.1f}分")# 张三 今年 28 岁,本次考试 88.8 分print(f"{name:>10}|{age:^5}|{score:>6.1f}")# 张三 | 28 | 88.8

5. 调试神技:print + 变量名自动显示(3.8+)

x=42y=[1,2,3]print(f"{x=}")# x=42print(f"{y=}")# y = [1, 2, 3] (注意空格美观)print(f"{x*2+len(y)=}")# x*2 + len(y)=87

6. 常见误区 & 注意事项

  1. print(1, 2, 3, sep=“”)→ 123(没有空格)
  2. print(“a”, end=“”)后不加 flush=True 时,在某些终端/重定向可能延迟显示
  3. print(a, b, c, sep=“, “, end=””)最后不加 print() 会缺少换行
  4. 大量 print() 在生产环境中应换成 logging 模块
  5. Jupyter Notebook 中 print() 默认 end=‘\n’,但大量输出建议用 tqdm 等进度条库

7. 总结:print() 进阶心法

  • 日常开发:f-string + sep/end是最 pythonic 的组合
  • 调试:f"{var=}"+print(…, file=sys.stderr)
  • 进度/实时输出:end=‘\r’ / ‘’ + flush=True
  • 美观对齐:{var:>10} / {:^8} / {:.2f}
  • 生产环境:逐步迁移到 logging 或 rich / textual 等美化库

你平时用 print() 最多的是哪种场景?
调试、进度显示、日志、格式化报表,还是别的?
如果有特别想优化的输出样式,也可以贴出来,我们一起改成更优雅的写法~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 13:44:43

专著和编著有啥区别?是一回事吗?

专著和编著有啥区别?专著和编著都是学术著作吗?怎么区分?下面淘淘学术来回答作者的这个疑问。 一、专著和编著的定义 很多作者容易把专著和编著混淆,是因为对于专著和编著的概念不清楚。看到专著和编著就就差一个字&#xff0c…

作者头像 李华
网站建设 2026/5/20 20:46:21

书匠策AI:教育论文数据分析的“智能魔法师”,让数据开口说故事

在学术写作的江湖里,数据是“论据之王”,但如何让数据从“沉默的数字”变成“会说话的证据”?传统方法里,研究者常被SPSS报错、Python代码、Excel函数折磨得焦头烂额,更别提跨学科分析、动态可视化这些“高阶技能”了。…

作者头像 李华
网站建设 2026/5/2 18:10:42

书匠策AI:教育论文的“数据炼金术士”,让数字开口说学术故事

在教育研究的江湖里,数据是“金矿”,但如何从杂乱无章的数字中提炼出有价值的结论,却让无数研究者头疼不已。传统数据分析工具像一把笨重的镐头,需要研究者自己挥汗如雨地挖掘;而书匠策AI(官网:…

作者头像 李华
网站建设 2026/5/1 4:57:42

async/await与多进程结合的混合爬虫架构

在现代网络数据采集场景中,爬虫面临着目标站点响应速度不一、反爬策略日趋严格、海量数据并行抓取效率要求高等多重挑战。单一的异步协程或多进程爬虫架构,往往难以兼顾高并发、高稳定性与高资源利用率。基于 async/await 的异步协程模式,能够…

作者头像 李华