簡體   English   中英

在python解釋器中,為什么使用顯式“ print”與不使用“ print”之間的結果有所不同?

[英]In python interpreters, why are results different between using an explicit “print” and not using it?

>>> 'sp\xc4m'
'sp\xc4m'
>>> print('sp\xc4m')
spÄm

截圖

在IDLE中,我認為使用“打印”功能與不使用它應該是相同的。 而“學習Python(第5本書)”這本書支持了我的觀點。

>>> lumberjack = 'okay'
>>> lumberjack
'okay'

書中的例子

我是python的新生,我的母語不是英語,所以我的問題和表達方式很有趣,但我一直在學習。 謝謝您的幫助。

IDLE顯示字符串的repr (或其他任何形式)。

>>> print 'sp\xc4m'
sp?m
>>> 'sp\xc4m'
'sp\xc4m'
>>> print repr('sp\xc4m')
'sp\xc4m'
>>> 

IDLE中的交互式解釋器有助於調試。 如果我寫了:

>>> print s
a       b

變量s實際包含什么? 您可以檢查:

>>> s
'a\tb'

現在您可以看到它是三個字符, a ,一個顯示為轉義序列\\t的選項卡, b 可能是'a b' (帶空格的九個字符)或''ab'(帶空格的十二個字符)。 兩者都以相同的方式打印,但是調試表示形式可以通過轉義碼並引用字符串來確定起點和終點,從而確定確切的內容。

這稱為變量的“表示形式”,它是可以由函數repr()訪問的調試值。 IDLE使用它來顯示未明確打印的變量。

在交互式提示下,顯示不print的變量用於調試。 不在腳本中使用print不會顯示任何內容。 要在腳本中強制顯示調試值,請使用print repr(s)

交互式解釋器的自動打印行為等效於

_ = the_expression_you_typed
if _ is not None:
    print repr(_)

除了None以外,這與print _不同之處在於print _將調用str而不是repr 從表面上看, strrepr之間的區別是str應該產生更多的人類可讀輸出,而repr應該產生明確的東西,理想情況下是可以產生對象的源代碼。

但是,實際上,存在這兩個函數的主要原因是,所以print "asdf"打印asdf而僅鍵入"asdf"打印"asdf"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM