Python命令行“characters”返回'characters'

时间:2010-07-23 04:12:37

标签: python

提前感谢您的帮助。

在命令行输入“example”时,Python返回'example'。我在网上找不到任何解释这个的东西。所有参考资料都在print命令的上下文中与字符串对话,我得到了关于使用双引号,单引号,三引号,转义命令等的所有材料。

但是,我不能找到任何解释为什么在命令行输入由双引号括起的文本总是返回由单引号括起的相同文本。是什么赋予了?谢谢。

3 个答案:

答案 0 :(得分:6)

在Python中'string' and "string" are used to represent string literals。它不像Java那样单引号和双引号代表编译器的不同数据类型。

解释程序会评估您输入的每一行并向您显示此值。在这两种情况下,解释器都会评估您输入的内容,获取字符串以及显示此值。显示字符串的默认方式是单引号,因此字符串的两次显示都用单引号括起来。

这看起来很奇怪 - 它打破了Python There should be one - and preferably only one - obvious way to do it的规则 - 但我认为不允许其中一个选项会更糟。

您还可以使用三引号输入字符串文字:

>>> """characters
... and
... newlines"""
'characters\nand\nnewlines'

您可以使用命令行确认这些是相同的事情:

>>> type("characters")
<type 'str'>
>>> type('characters')
<type 'str'>
>>> "characters" == 'characters'
True

解释器使用对象的__repr__ method来显示要打印的内容。因此,在您自己的对象上,您可以确定它们在解释器中的显示方式。我们无法更改内置类型的__repr__方法,但我们可以自定义解释器输出using sys.displayhook

>>> import sys
>>> def customoutput(value):
...     if isinstance(value,str):
...        print '"%s"' % value
...     else:
...        sys.__displayhook__(value)
...
>>> sys.displayhook = customoutput
>>> 'string'
"string"

答案 1 :(得分:1)

在python中,单引号和双引号在语义上是相同的。 起初它让我感到奇怪,因为在C ++和其他强类型语言中,单引号是char,双精度是string。 只是习惯了python不关心类型的事实,因此没有用于标记字符串与字符的特殊语法。不要让它掩盖你对一种伟大语言的看法

答案 2 :(得分:0)

不要混淆。 在python单引号和双引号是相同的。创建一个字符串对象。