首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python命令行"characters“返回'characters‘

Python命令行"characters“返回'characters‘
EN

Stack Overflow用户
提问于 2010-07-23 12:12:37
回答 3查看 388关注 0票数 1

提前感谢您的帮助。

当在命令行输入"example“时,Python返回”example“。我在网上找不到任何东西来解释这一点。所有参考资料都与print命令上下文中的字符串有关,并且我获得了有关使用双引号、单引号、三重引号、转义命令等的所有资料。

但是,我找不到任何东西来解释为什么在命令行输入用双引号括起来的文本总是返回用单引号括起来的相同文本。怎么回事?谢谢。

EN

回答 3

Stack Overflow用户

发布于 2010-07-23 15:41:16

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

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

这看起来确实很奇怪-因为它打破了Python的规则-但我认为不允许其中一个选项会更糟。

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

代码语言:javascript
复制
>>> """characters
... and
... newlines"""
'characters\nand\nnewlines'

您可以使用命令行确认它们是同一件事:

代码语言:javascript
复制
>>> type("characters")
<type 'str'>
>>> type('characters')
<type 'str'>
>>> "characters" == 'characters'
True

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

代码语言:javascript
复制
>>> import sys
>>> def customoutput(value):
...     if isinstance(value,str):
...        print '"%s"' % value
...     else:
...        sys.__displayhook__(value)
...
>>> sys.displayhook = customoutput
>>> 'string'
"string"
票数 6
EN

Stack Overflow用户

发布于 2010-07-23 12:18:19

在python中,单引号和双引号在语义上是相同的。一开始我觉得很奇怪,因为在C++和其他强类型语言中,单引号是char,双引号是string。只需习惯python不关心类型的事实,因此没有特殊的语法来标记字符串和字符。不要让它影响你对一门伟大语言的看法

票数 1
EN

Stack Overflow用户

发布于 2010-07-23 14:51:07

别搞错了。在python中,单引号和双引号是相同的。将创建一个字符串对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3315346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档