我刚刚注意到一些奇怪的事情
在python中,如果我这样做
>>> k = 1
>>> j = 2
>>> print k,",",j
1 , 2 # prints this
我预计会是:
1,2
为什么这两者之间有空格,而
>>> print str(k) + "," + str(j)
1,2
谢谢
我刚刚注意到一些奇怪的事情
在python中,如果我这样做
>>> k = 1
>>> j = 2
>>> print k,",",j
1 , 2 # prints this
我预计会是:
1,2
为什么这两者之间有空格,而
>>> print str(k) + "," + str(j)
1,2
谢谢
第一个示例将 3 个参数print
直接传递给,然后将它们转换为字符串并将它们连接在一起,用空格分隔。第二个示例首先转换并连接字符串,然后将整个字符串print
作为单个参数传递给。如果您改为这样做print str(k), ",", str(j)
,您将得到与第一个示例相同的结果。
考虑print
函数的工作方式而不是关键字。举个例子:
def foo(*args):
return ' '.join(map(str, args))
foo('a', 'b', 'c')
将传递 foo 3 个参数,然后返回由空格连接的这 3 个参数,'a b c'
. foo('a' + 'b' + 'c')
将首先创建 string 'abc'
,然后将其作为单个参数传递给 foo,导致 foo 返回 just 'abc'
。
就是这样。一个原因可能是为了调试。像世界其他地方的大多数人一样,我经常使用print
语句来调试,因为它比使用pdb
简短的简单脚本更快更容易。
考虑:
a = 1
b = 2
print a,b
现在这个打印1 2
很清楚地表明它与print
有 2 个参数的行匹配。(在您的示例中,您第一次传递了 3 个参数,print
第二次只传递了 1 个)。print a,b
想象一下,如果它给了你,那将是多么的混乱12
!您将查看所有代码,试图找出 a 的12
来源。当然,正如其他人所指出的,如果您对如何打印内容有更严格的要求,则一种解决方法是使用字符串格式。
正如其他人指出的那样,主要原因可能是调试。在那张纸条上,看看当你在同一行打印出多个值进行调试时会发生什么:
>>> print myObj1, myObj2
myFirstObj mySecondObj
这样,我不必在为调试目的而打印出来的变量之间打印一个空格,从而使print
这种用法变得轻量级。
当然,正如其他人所指出的,你最好使用','.join(myListOfStrings)
打印逗号分隔的字符串列表