免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3542 | 回复: 7

python3.2 print的一个问题。 [复制链接]

论坛徽章:
0
发表于 2011-10-20 19:18 |显示全部楼层
本帖最后由 wendaozhe 于 2011-10-20 19:42 编辑
  1. import sys
  2. sys.stdout.write('enter your number:')
  3. print(sys.stdin.readline())
复制代码
为什么不是先输出'enter your number',而是先执行print?
而在python2.6 2.7上都是先输出enter your number

论坛徽章:
0
发表于 2011-10-20 19:42 |显示全部楼层
大家的python3.2能正常显示上面的代码吗?

论坛徽章:
0
发表于 2011-10-20 22:15 |显示全部楼层
[ibm@thinkpad ~]$ rpm -qa python
python-2.7-8.fc14.1.i686

论坛徽章:
0
发表于 2011-10-20 22:18 |显示全部楼层
[ibm@thinkpad ~]$ rpm -qa python
python-2.7-8.fc14.1.i686
测试:yes

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-07-05 06:20:00
发表于 2011-10-21 00:33 |显示全部楼层
在我的python 3.2.2上也是如此:先执行print。让人很诧异,向大家请教。

论坛徽章:
0
发表于 2011-10-21 08:05 |显示全部楼层
在stdout后加上一句:
  1. sys.stdout.flush()
复制代码
3.0和2.0版本实现机制不一样啊!

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-07-05 06:20:00
发表于 2011-10-21 17:50 |显示全部楼层
回复 6# wendaozhe
经验证,六楼正确。

论坛徽章:
0
发表于 2011-10-21 22:50 |显示全部楼层
把sys.stdout当成文件描述符处理了。
我们写文件的时候,一般也是
fp.write(s)
fp.flush()
才能马上写入文件,否则是先写在内存缓冲区中,等到了一定的量或者文件关闭时,才真正写入到文件。
这点可以单步去调试一下就可以看到了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP