2013-12-11 318 views
4
>>> print "hello world" 
hello world 
>>> "hello world" 
'hello world' 
>>> 

有什麼區別?python print「hello world」vs「hello world」

一個完整的noob問題。

蟒蛇Hello World示例大多采用

print "hello world" 

我可以帶,其print,只是使用"Hello world"給了蟒蛇的介紹?

+1

這是一個出人意料的好問題。根據我的理解,最終的結果在技術上幾乎相同,但通過打印進行處理是可取的,因爲處理器可以直接執行「str」命令,而不必知道它應該如何處理該行。 – AaronB

+3

也許我是唯一一個被這個困擾的人 - 但是你能選擇「你好詞」還是「你好世界」並堅持下去?謝謝。 – Floris

回答

10

區別在於print調用str而REPL(讀取評估打印循環)的默認操作是在對象上調用repr,除非它是None

需要注意的是,如果你沒有在交互式解釋工作(你是不是在REPL),那麼你就不會看到在版本的任何輸出而不print

另請注意,輸出之間存在差異。 repr在字符串上添加引號。

2

如果您將空格替換爲換行符,您會發現它們在REPL中甚至沒有真正的工作。

>>> print "hello\nworld" 
hello 
world 
>>> "hello\nworld" 
'hello\nworld' 

如果試圖通過本身在程序中使用

"hello\nworld" 

,你會得到當然沒有

-1

的輸出只能使用打印功能棄權,如果你在命令否則你必須使用打印功能

0

如果你知道一點Bash腳本,你會發現echo'$ HOME'會打印$ HO ME字母而不是$ HOME中的實際值,我的意思是/ home/user /。

然而,作爲Python,打印功能將解釋爲雙引號和單引號作爲同樣的事情。我只是使用「」,如果沒有引號或句子不必使用雙引號。雖然,你仍然可以做到這一點與\」

示例 -

print 'hello\nworld' -> hello 
         world 

print "hello\nworld" -> hello 
         world 

'hello\nworld' -> hello\nworld 

如果有時候,我需要原始輸出,我不會用打印或嘗試其他解決方法。

此外,如果我必須使用打印功能輸出原始字符串,我只是使用這個 -

print repr("hello\n\tworld\\") -> 'hello\n\tworld\\' 

雖然這取決於你的狀況。

隨意編輯/建議更好地改善此回覆。我可能在這個答案中犯了很多錯誤和錯誤信息。

0

這是一個非常好的問題,事實上,我開始學習Python的時候也有同樣的疑問。首先,我們將觀察這兩個不同程序的不同輸出。

程序類型1

>>> print "hello world" 
hello world 

使用打印功能,因爲我們知道是用來打印出給定字符串或數字數據的程序。

程序類型2

>>> "hello world" 
'hello world' 
>>> 'hello world' 
'hello world' 

當打印功能不使用,該字符串被直接告知單/雙引號內給它進行打印,得到的答案也被引號內打印。我們的程序不需要這種類型的輸出,即使可能很容易不使用print命令。

這隻能在Python命令行中使用。如果程序保存在單獨的文件中並且將被完全執行,則不可能。