Python命令行"characters"返回'characters'

1 python

在此先感谢您的帮助.

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

但是,我无法解释为什么在命令行输入用双引号括起来的文本总是返回由单引号括起来的相同文本.是什么赋予了?谢谢.

Dav*_*ebb 6

在Python都'string'"string"用来表示字符串常量.它不像Java那样单引号和双引号代表编译器的不同数据类型.

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

这看起来确实很奇怪 - 它打破了Python的规则.应该有一个 - 最好只有一个 - 显而易见的方法 - 但我认为不允许其中一个选项会更糟.

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

>>> """characters
... and
... newlines"""
'characters\nand\nnewlines'
Run Code Online (Sandbox Code Playgroud)

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

>>> type("characters")
<type 'str'>
>>> type('characters')
<type 'str'>
>>> "characters" == 'characters'
True
Run Code Online (Sandbox Code Playgroud)

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

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