news 2026/7/15 0:12:00

你真的会用 Python 的 print 吗?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
你真的会用 Python 的 print 吗?

大家好!今天我们来聊聊Python里最“平平无奇”却又无处不在的print()函数。

作为Python开发者,我们几乎每天都在用它,但你真的了解它的所有玩法吗?

其实很多时候,我们只用了它 10% 的功力。

今天,我们就来扒一扒print函数的“隐秘角落”。

掌握了它的几个参数,保证让你在同事眼中瞬间变身Python资深玩家!

1. 基础玩法:不仅仅是打印一个字符串

如果你把鼠标悬停在print函数上,你会发现它的第一个参数其实是*args(或者叫*objects)。

那个星号*意味着它是“贪婪”的--你可以给它塞进一个,甚至无数个对象。

比如:

/* by 01130.hk - online tools website : 01130.hk/zh/generateavalanchewallets.html */ # 普通玩家 print("毛肚") print("鸭肠") print("雪花肥牛") # 进阶玩家:一次性打印多个 print("毛肚", "鸭肠", "雪花肥牛") # 输出:毛肚 鸭肠 雪花肥牛

更酷的是,如果你有一个列表,你可以直接通过解包Unpacking)把它“炸”开传给print

/* by 01130.hk - online tools website : 01130.hk/zh/generateavalanchewallets.html */ hotpot_list = ["虾滑", "宽粉", "娃娃菜"] print(hotpot_list) # 输出:['虾滑', '宽粉', '娃娃菜'] # 加上星号 * 进行解包 print(*hotpot_list) # 输出:虾滑 宽粉 娃娃菜

加上*号,列表的方括号没了,逗号也没了,直接变成了清爽的空格分隔。

2. 拒绝千篇一律的空格:sep 参数

细心的你可能发现了,上面打印多个元素时,默认是用空格隔开的。

如果你想打印一个日期,或者生成一个CSV格式的字符串,空格就显得很尴尬了。

这时候,sepseparator 分隔符)参数闪亮登场。

比如:格式化日期

year = 2026 month = 1 day = 15 # 默认情况 print(year, month, day) # 输出:2026 1 15 (不太好看) # 使用 sep 参数 print(year, month, day, sep="-") # 输出:2026-1-15 (这就对了!)

或者生成一个竖线分割的标题样式:

print("Python", "Java", "C++", sep=" | ") # 输出:Python | Java | C++

只要你愿意,分隔符可以是任何字符,甚至是一段话

3. 控制结尾的艺术:end 参数

默认情况下,print函数是个“急性子”,每打印完一次,它都会自动帮我们敲一个回车换行(\n)。

这就是为什么我们连续写三个print,它们会显示在三行。

但有时候,我们想把两句话连在一起,或者在同一行输出内容,这时就需要end参数出马了。

print("凶手其实是", end="......") print("管家!") # 输出:凶手其实是......管家!

这样,两行代码的输出无缝衔接在了一起。

注意: 如果你把end设置为空字符串或者非换行符,记得在最后适当地加一个换行,否则你的终端提示符可能会尴尬地挤在文字后面。

4. 偷偷记笔录:file 参数

这是很多初学者最容易忽略的参数。

print默认是将内容输出到sys.stdout(也就是你的屏幕/控制台),但其实,它完全可以把内容“打印”到文件里。

这就相当于你自己写了一个迷你版的日志记录器(Logger),非常适合快速调试或记录脚本运行结果。

# 打开一个文件用于追加内容 with open("摸鱼日志.txt", "a", encoding="utf-8") as f: print("10:00 - 喝了一杯咖啡", file=f) print("10:30 - 刷了一会儿推特", file=f) print("11:00 - 盯着屏幕发呆", file=f) print("日志记录完毕,请查看 摸鱼日志.txt")

运行完这段代码,控制台只会显示最后一句提示,而你的“摸鱼记录”已经悄悄保存在了 txt 文件里。

虽然对于大型项目我们推荐用logging模块,但在这个脚本写的小工具里,用file参数简直不要太方便。

5. 拒绝卡顿,实时刷新:flush 参数

最后这个参数flush,常常让新手摸不着头脑。

计算机为了效率,通常会有“缓冲区”的概念。

当你print东西时,它不一定会立刻显示在屏幕上,而是攒够了一波再一起吐出来(特别是当你没有换行的时候)。

这会导致有时候你写了代码,屏幕却像卡死了一样半天没反应。

如果你想做一个倒计时或者进度条,就需要将flush设置为True,强制计算机:“别攒了,立刻给我显示出来!”

import time print("正在入侵系统", end="") for i in range(5): print(".", end="", flush=True) # 关键在这里! time.sleep(0.5) print("\n入侵成功!")

如果你不加flush=True,你可能会发现屏幕卡顿了2.5秒,然后一次性蹦出五个点。

加上之后,你就能看到那种“嘟...嘟...嘟...”的动态加载效果了。

6. 总结

虽然在90%的日常开发中,我们只需要最简单的print(x),但编程的乐趣往往隐藏在剩下的10%里。

  • *args:让你可以一次打印多个宝贝,或者解包列表。
  • sep:让你自定义元素之间的胶水。
  • end:让你控制话有没有说完(换不换行)。
  • file:让你把话悄悄说给文件听。
  • flush:让你拒绝延迟,即刻兑现。

掌握了这些,下次有机会就给同事露一手!

Happy Coding!

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

Java版LeetCode热题100之翻转二叉树:从递归到迭代的全面解析

Java版LeetCode热题100之翻转二叉树:从递归到迭代的全面解析本文将深入剖析 LeetCode 第226题「翻转二叉树」,不仅提供递归与迭代两种主流解法,还涵盖算法原理、复杂度分析、面试技巧、工程应用及关联题目拓展。全文约9500字,结构…

作者头像 李华
网站建设 2026/6/26 12:31:45

网络问题如何排查?mtr命令详解

网络问题如何排查?mtr命令详解mtrmtr命令是一个网络诊断工具,用于检测网络的连通性和延迟。MTR是My Traceroute的缩写,是traceroute和ping命令的结合体。mtr默认使用ICMP协议,在介绍mtr的详细用法前我们先了解下ICMP协议。IMCPICM…

作者头像 李华
网站建设 2026/7/3 10:47:15

踩下油门时混合动力车的能量分配就像打扑克——既要看当前手牌,也得算后面几步。模型预测控制(MPC)在这局游戏里当起了军师,今天咱们就拆解这背后的骚操作

模型预测控制(MPC)在混合动力汽车能量管理策略开发上的运用。 [1]利用车速预测模型(BP或者RBF神经网络,预测模型资料也有发在其他链接)根据预测的信息对车辆进行优化控制,可以对混动汽车的能量管理具有一定…

作者头像 李华
网站建设 2026/6/25 20:43:54

100kW微型燃气轮机Simulink建模探索

100kW微型燃气轮机Simulink建模,微燃机包括压缩机模块、容积模块、回热器模块、燃烧室模块、膨胀机模块、转子模块以及控制单元模块。 考虑微燃机变工况特性下的流量、压缩绝热效率、膨胀绝热效率、压缩比、膨胀比等参数的变化,可以观察变负载情况下微燃…

作者头像 李华
网站建设 2026/7/1 21:14:44

基于深度学习神经网络YOLOv4目标检测的汽车车牌识别系统

第一步:YOLOv4介绍 YOLOv4是一种目标检测算法,它在精度和速度之间取得了最佳的平衡。它是YOLO(You Only Look Once)系列算法的最新版本,通过将目标检测任务转化为一个回归问题,实现了实时目标检测。YOLOv4…

作者头像 李华
网站建设 2026/7/14 22:21:17

【测试人生】一套灵活的变更风险观测策略匹配机制设计

近期笔者在投入变更风险防控开放平台的额外功能开发,目的是希望设计一套更加灵活的变更风险观测策略匹配机制,能够在满足面向任意变更场景应用观测策略的同时,尽可能保证产品体验,让用户清晰地了解到自己配置的什么策略能够在什么…

作者头像 李华