Python:转义字符未被解释

6

由于某种原因,当我在代码中编写转义字符时,转义字符从未被解释。我曾经在Windows上工作,现在切换到Mac可能与此有关吗?以前在Windows上工作时,我从未遇到过这个问题。我尝试搜索,但没有找到任何相关信息。非常感谢您的帮助!

下面是一个例子:

print 'Hello \nWorld'

"从这里您期望获得的是: "
>> Hello 
>> World

但是,相反,IDLE会准确地打印出以下内容:
>> 'Hello \nWorld'
1个回答

8
你没有打印字符串,你打印的是字符串常量;它是字符串的表示形式。
>>> 'Hello\nWorld'
'Hello\nWorld'
>>> print 'Hello\nWorld'
Hello
World
>>> print repr('Hello\nWorld')
'Hello\nWorld'

每当您在Python交互解释器(或IDLE)中回显一个变量时,解释器都会将该值回显给您:
>>> var = 'Hello\nWorld'
>>> var
'Hello\nWorld'

打印该值,然而,输出到相同的位置,但是这完全是不同的一个动作:
>>> print var
Hello
World

如果我调用一个打印函数,例如and,并且该函数返回一个值,你会看到两者都被回显到屏幕上:
>>> function foo():
...     print 'Hello\nWorld'
...     return 'Goodbye\nWorld'
...
>>> foo()
Hello
World
'Goodbye\nWorld'

在上面的例子中,HelloWorld 是由函数打印出来的,但是 'Goodbye\nWorld' 是该函数的返回值,解释器将其以其表示形式回显给我,这非常有帮助。

你没有打印字符串,而是打印了字符串字面量; (...). 由于两者之间没有区别(这在您自己的示例中清楚地显示出来),我不知道声明这一点的目的是什么。看起来你没有注意到问题是OP声称在IDLE中评估print 'Hello \nWorld'后得到了'Hello \nWorld'作为输出,这是不正确的。 - Piotr Dobrogost
@PiotrDobrogost: 'Hello\nWorld' 是一个字符串字面量。换行符被转义了,它被引号包围。这与 Hello - 换行符 - World 有很大的区别。我看到 OP 对 print expressionexpression 之间的区别感到困惑,这就是为什么我在演示它们之间的差异。 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接