Python - 当我在没有'print'的解释器中编写语句时会发生什么?

Jee*_*ekh -1 python python-2.7

我刚从文档开始学习python 2.7.11.我是做这是在那里给出的例子,但在弄糊涂了print,并r进行了介绍.我对如何将反斜杠显示为输出感到困惑.这与字符转义相关,但到目前为止我只是用于\b退格,\n新行,\\反斜杠

这就是我所说的:

在此输入图像描述

有四种不同的情况:

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

  2. 使用print但不是r

  3. 使用r但不是print

  4. 使用printr

并且他们都提供不同的输出.我无法理解四种情况下实际发生的事情.

Vla*_*lad 5

两者之间没有任何联系,必然.r引入了一个原始字符串文字,它不解析转义码,这意味着\引号之间的a 将是\字符串数据中的实际字符.

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()
Run Code Online (Sandbox Code Playgroud)

另外,关于\es,值得注意的是Python会忽略它不知道的转义序列:

>>> [c for c in '\w']
['\\', 'w']
>>> [c for c in '\n']
['\n']
Run Code Online (Sandbox Code Playgroud)

\n成为一个换行符,但\w仍然是一个反斜杠后跟一个w.

例如,在'hello\\\world'第一个中,第一个\逃脱第二个,而第三个则单独留下,因为它后跟一个w.