[英]In python interpreters, why are results different between using an explicit “print” and not using it?
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
。 從表面上看, str
和repr
之間的區別是str
應該產生更多的人類可讀輸出,而repr
應該產生明確的東西,理想情況下是可以產生對象的源代碼。
但是,實際上,存在這兩個函數的主要原因是,所以print "asdf"
打印asdf
而僅鍵入"asdf"
打印"asdf"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.