2015-04-23 160 views
5

所以,我目前在学习python的方式很难。在其中一个练习中,我们用它们之间的变量输出字符串文字。我注意到,与其他语言不同,python会自动在字符串文字和变量之间添加空格。我只是好奇它是如何做到的。下面是我的意思的一个例子。python如何知道在字符串文字和变量之间添加空格?

example.py:

total_SO_questions_asked = 1 
print "I have asked", total_SO_questions_asked, "question to SO thus far." 

终端:

$ python example.py 
I have asked 1 question to SO thus far. 

这是愚蠢的,不是很重要的,但我很好奇,我希望能SO赐教!

+4

这里没有什么聪明的东西在内部发生。不管它们是什么,“印刷”总是将它的论点与空间分开。 – iCodez

+0

https://docs.python.org/2/reference/simple_stmts.html?highlight=print#grammar-token-print_stmt – TigerhawkT3

+3

@iCodez - 你不应该在评论中回答问题,它会让他们陷入冷门...... – DrCord

回答

1

它的Python只是一个很酷的功能。

有两个事情有多个参数:它在参数周围添加一个空间作为必要参数,它将每个参数分别转换为一个字符串。

让我们看看如何简单,我们可以利用这些特点使得潜在的复杂代码:

a = 5 
b = 3 
c = a + b 
print a, "plus", b, "equals", a+b 

如果我们不能拥有单独铸造参数列表,它会很难看:

print str(a) + " plus " + str(b) + " equals " + str(a+b) 

来自Python的禅,第1行和第3行:

美丽胜于丑陋。

简单胜过复杂。

查看Python reference了解更多信息。

+1

谢谢!这是一个非常明确的答案,尤其是将它与Python的Zen结合起来,不仅回答了python如何做到这一点,而且还回答了为什么。 OP很高兴! –

+0

很高兴能帮到你! –

0

您可以轻松打印照片,无需空格:

>>> aa = 'abcd' 
>>> bb = 'efgh' 
>>> n = 1 
>>> print "%s%d%s" % (aa, n, bb) 
abcd1efgh 
>>> 
+1

最好使用[''''str.format()'''](https://docs.python.org/2/library/stdtypes.html#str.format)('''print“{ } {} {}“。格式(aa,n,bb)''')。无论如何,你没有回答OP的问题。 – pzp

0

没有聪明在这里内部发生​​了。无论它们是什么,print总是将它的论点与空间分开。

(回答iCodez的评论无情被盗)

相关问题