为何sys.stdout.write()与文件write()会输出数字4?
为什么代码里会输出数字4?
那个数字4是sys.stdout.write()和文件对象的write()方法的返回值,代表成功写入的字符总数。
咱们来算一下你写入的内容:str(X) + ' ' + str(Y) + '\n'拼接后是字符串 "1 2\n",数一下里面的字符:
- '1'(1个)
- 空格(1个)
- '2'(1个)
- 换行符
\n(1个)
加起来刚好4个字符,所以方法返回4。
另外,Python交互式环境有个特性:如果执行的表达式或调用的方法有返回值,且你没有用变量接收这个返回值,环境就会自动把返回值打印出来。print()函数本身没有返回值(实际返回None,交互式环境不会打印None),所以不会额外输出;但write()方法会返回写入的字符数,所以这个4就被打印出来了。
如果你不想看到这个返回值,可以把它赋值给一个变量,比如:
count = sys.stdout.write(str(X) + ' ' + str(Y) + '\n')
这时候只会输出1 2,返回值4存在count变量里,不会被打印。
内容的提问来源于stack exchange,提问作者Amarpreeet Singh
相关产品推荐
相关产品推荐

