Python函数print()参数end的坑和解决方法

本文介绍了Python内置函数`print()`中`end`参数的使用技巧,指出其可能导致的内容输出延迟问题。当在PyCharm或cmd中运行时,未正确设置`end`和`flush`可能导致无法实时显示输出。解决方法包括设置`end`为非换行字符串和使用`flush=True`。同时,文中提供了相关Python编程资源和图书推荐。
摘要由CSDN通过智能技术生成

封面图片:《Python程序设计基础与应用》(ISBN:9787111606178),董付国,机械工业出版社

图书详情:

用书教师可以联系董老师获取教学大纲、课件、源码、教案、考试系统等配套教学资源。

===============

Python相关课程教材选用参考与建议

董付国老师Python在线课程资源使用方法

===============

Python内置函数print()的语法为:

虽然sep参数和file参数也有很重要的用途,但是没啥坑,常规使用即可,本文重点介绍end和flush。使用print()函数输出完给定的值之后,默认以换行结束,例如:

如果想让这样循环输出的内容显示在同一行中,可以修改print()函数的参数end,指定为不包含换行符和回车符的字符串,例如:

但是,这个用法是会带来一个隐藏的坑。函数print()并不是直接把内容输出到屏幕(file参数为默认值时),而是先输出到缓冲区,等缓冲区满了或者程序运行结束之后再刷新到屏幕上,除非采用其他措施强制刷新并清空缓冲区(或者输出流)。

下面的这个程序,本意是每隔0.5秒输出一个圆点来模拟动态进度条效果的过程,在IDLE中、Spyder中运行不会有问题。然而在PyCharm和cmd中并没有实现这个动画的效果,而是等了5秒钟以后忽地一下子输出了所有的内容。

正如刚才所说,如果有其他措施能强制刷新并清空缓存,就可以避免这个问题了,一种方法是使用print()函数的flush参数,一种方法是调用sys.stdout.flush()函数。下面两个视频演示了这两种用法。

除了这两种方式之外,如果在输出的内容中有回车符\r,也会立刻输出到屏幕,从而间接实现上面的效果。但是这样会覆盖本行已经输出的内容,使用时要注意。由于公众号一篇文章最多只能放3个视频,大家可以按照上面视频中的方法运行下面的代码观察效果。

温馨提示

关注本公众号“Python小屋”,通过菜单“最新资源”==>“历史文章”可以快速查看分专题的930篇技术文章列表(可根据关键字在页面上搜索感兴趣的文章),通过“最新资源”==>“微课专区”可以免费观看450节Python微课,通过“最新资源”==>“培训动态”可以查看近期Python培训安排,通过“最新资源”

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值