簡體   English   中英

Python-當我在沒有'print'的解釋器中編寫語句時會發生什么?

[英]Python - What happens when I write statements in the interpreter without 'print'?

我剛剛開始從文檔中學習python 2.7.11。 我正在做那里提供的示例,但是當引入printr時感到困惑。 我對反斜杠如何顯示為輸出感到困惑。 這與字符轉義有關,但是直到現在我只使用\\b表示退格, \\n換行, \\\\表示反斜杠

這就是我在說的:

在此處輸入圖片說明

有四種不同的情況:

  1. 既不使用print也不使用r

  2. 使用print而不是r

  3. 使用r但不print

  4. 同時使用printr

它們都提供不同的輸出。 我無法理解這四種情況下的實際情況。

兩者之間沒有必然的聯系。 r引入了一個原始的字符串文字,它不解析轉義碼,這意味着引號之間的\\將是字符串數據中的實際\\字符。

print將打印出實際的字符串,而僅在>>>提示符下鍵入字符串文字將使Python隱式打印字符串的值,但是它將作為字符串文字(帶有特殊字符轉義)進行打印,因此您可以將其粘貼回>>>並獲得相同的字符串。

編輯:在某些評論中提到了repr() 基本上,這是要返回一個對象的表示形式,該表示形式可以解析為等效的對象,而str()的目的更多地是人類可讀的描述。 對於內置對象,兩者都是適當的預定義,而對於用戶對象,可以通過定義特殊方法__repr__()__str__()來定義它們。

>>> obj將打印出repr(obj) ,而print obj將打印str(obj)的值。

>>> class Foo(object):
...     def __str__(self):
...             return "str of Foo"
...     def __repr__(self):
...             return "Foo()"
...
>>> f = Foo()
>>> f
Foo()
>>> print f
str of Foo
>>> eval(repr(f))
Foo()

另外,關於\\ es,也應該注意Python將忽略它不知道的轉義序列:

>>> [c for c in '\w']
['\\', 'w']
>>> [c for c in '\n']
['\n']

\\n成為換行符,而\\w仍然是反斜杠,后跟w

例如,在'hello\\\\\\world' ,第一個\\逸出第二個\\ ,而第三個\\被保留,因為后面跟着w

暫無
暫無

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

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