Python文档翻译:如何让print语句不输出空格和回车

标签:Python

首先要说的是,Python 3.0下print已经从语句变为函数了,所以本帖只针对低版本的Python(我参考的文档是2.5.4版的)。

再介绍下print语句的作用。
print语句依次计算每个表达式,并将其结果输出到标准输出(standard output )中。如果对象不是字符串,就先将其转换为字符串,然后输出。这个过程使用的是对象的__str__方法。此外,__repr__方法也能实现类似功能(但可以与前者不同)。

在输出每个对象前,print语句会先输出一个空格,除非下述三种情况:
  1. 还没有任何字符被输出到标准输出上
  2. 输出的前一个字符为"\n"
  3. 上一个输出操作使用的不是print语句
所以只用print语句时,是没法消除多个对象间的空格的。但是可以通过将多个对象拼成一个字符串对象,达到不输出空格的效果。
此外,每个print语句结束时,将会自动添加一个"\n"字符,除非该语句以逗号","结束。
而用sys.stdout.write则不会自动添加空格和回车。

print语句还有个高级用法,即用>>指定一个输出对象,调用其write方法输出。如果计算出来的输出对象为None,则用sys.stdout作为输出。

文档就全部翻译完了,给些自己写的例子:
[b]>>> print 'a'
a
>>> print 'a\n'
a

>>> print 'a', ; print 'b'
a b
>>> print 'a' ; print 'b'    #没有逗号就会换行
a
b
>>> print 'a' 'b'       #这里是字符串的自动合并,print会当成一个对象输出,所以没有空格
ab
>>> print 'a', 'b'
a b
>>> import sys
>>> sys.stdout.write("a"); sys.stdout.write("b")
ab
>>> print 'a%s' % b
ab
>>> print 'a' + b
ab
>>> b.__str__()
'b'
>>> b.__repr__()    #很奇怪地多个引号
"'b'"
>>> print 'a%s' % repr(b)    #这里也有引号
a'b'
>>> print 'a%s' % str(b)
ab
>>> c = 1
>>> print 'a%d' % c
a1
>>> c.__str__()
'1'
>>> c.__repr__()
'1'
>>> print 'a%s' % str(c)
a1
>>> print 'a%s' % c.__str__()
a1
>>> print 'a%s' % repr(c)    #这个就没有引号
a1
>>> print 'a%s' % c.__repr__()
a1
>>> print >> sys.stdout, '\n'    #仍会自动输出回车


>>> print >> sys.stdout, 'a', b, '%d' % c     #仍会自动输出空格
a b 1
>>> print >> None, 'a'
a[/b]

1条评论 你不来一发么↓ 顺序排列 倒序排列

    向下滚动可载入更多评论,或者点这里禁止自动加载

    想说点什么呢?