2015-04-23 157 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的評論無情被盜)

相關問題