单引号与Python中的双引号
根据文件,他们几乎可以互换。 有一个文体上的理由使用一个在另一个?
我喜欢在用于插值的字符串或自然语言消息中使用双引号,对于小符号类型的字符串使用单引号,但是如果字符串包含引号,或者如果我忘记,则会打破规则。 对于正则表达式,我使用三重双引号作为docstrings和原始字符串文字,即使它们不是必需的。
例如:
LIGHT_MESSAGES = { 'English': "There are %(number_of_lights)s lights.", 'Pirate': "Arr! Thar be %(number_of_lights)s lights." } def lights_message(language, number_of_lights): """Return a language-appropriate string reporting the light count.""" return LIGHT_MESSAGES[language] % locals() def is_pirate(message): """Return True if the given message sounds piratical.""" return re.search(r"(?i)(arr|avast|yohoho)!", message) is not None
在https://docs.python.org/2.0/ref/strings.html引用官方文档:;
用简单的英文:字符串文字可以用单引号(')或双引号(“)括起来。
所以没有区别。 相反,人们会告诉你选择符合上下文的风格, 并保持一致 。 我同意 – 并补充说,尝试为这种事情提出“约定”是毫无意义的,因为你最终只会混淆任何新来的人。
我过去比较喜欢'
,特别是'''docstrings'''
,因为我发现"""this creates some fluff"""
。 此外, '
我的瑞士德语键盘上没有Shift键可以输入。
我已经改为使用三重引号"""docstrings"""
,以符合PEP 257 。
我和Will在一起:
- 双引号的文字
- 任何行为像标识符的单引号
- 双引号正则表达式的原始字符串文字
- 文档三倍双引号
我会坚持,即使这意味着很多逃脱。
由于引号,我从单引号标识符中获得最大价值。 其余的做法只是为了给那些单引号的标识符一些常设的空间。
如果你有的字符串包含一个,那么你应该使用另一个。 例如, "You're able to do this"
,或者'He said "Hi!"'
。 除此之外,您应该尽可能保持一致(在模块内,在包内,在项目内,在组织内)。
如果你的代码将被使用C / C ++的人阅读(或者如果你在这些语言和Python之间切换),那么使用''
作为单字符串,使用""
作为更长的字符串可能有助于简化转换。 (同样地,下面的其他语言不能互换)。
我在野外看到的Python代码倾向于赞成"
over '
,但是只是稍微有点,除了"""these"""
之外, """these"""
比'''these'''
看到。
三重引用的评论是这个问题的一个有趣的副标题。 PEP 257指定文档字符串的三重引号 。 我使用谷歌代码搜索进行了快速检查,发现Python中的三重双引号大约是三重单引号的 10倍 – 在谷歌索引代码中,出现了1.3M比131K。 所以在多行情况下,如果使用三重双引号,那么你的代码可能会对人们更加熟悉。
"If you're going to use apostrophes, ^ you'll definitely want to use double quotes". ^
出于这个简单的原因,我总是在外面用双引号。 总是
说到绒毛,用'如果你将不得不使用转义字符来表示撇号,简化字符串文字有什么好处呢? 这是否会冒犯编码者阅读小说? 我无法想象高中英语课是多么痛苦!
Python使用引号如下所示:
mystringliteral1="this is a string with 'quotes'" mystringliteral2='this is a string with "quotes"' mystringliteral3="""this is a string with "quotes" and more 'quotes'""" mystringliteral4='''this is a string with 'quotes' and more "quotes"''' mystringliteral5='this is a string with \"quotes\"' mystringliteral6='this is a string with \042quotes\042' mystringliteral6='this is a string with \047quotes\047' print mystringliteral1 print mystringliteral2 print mystringliteral3 print mystringliteral4 print mystringliteral5 print mystringliteral6
其中给出了以下输出:
this is a string with 'quotes' this is a string with "quotes" this is a string with "quotes" and more 'quotes' this is a string with 'quotes' and more "quotes" this is a string with "quotes" this is a string with 'quotes'
一般情况下,我使用双引号,但没有任何具体的原因 – 可能只是出于Java的习惯。
我想你也更可能希望在内联文字字符串撇号比你想要双引号。
我个人坚持一个或另一个。 没关系。 提供你自己的意思,只要在你合作的时候混淆别人。
这可能是一种文体偏好。 我刚刚检查了PEP 8,没有看到任何单引号和双引号。
我更喜欢单引号,因为它只有一个按键而不是两个。 也就是说,我不必把shift键做成单引号。
在Perl中,当你有一个不需要插入变量或转义字符(如\ n,\ t,\ r等)的字符串时,你想使用单引号
PHP与Perl有着同样的区别:单引号中的内容不会被解释(即使\ n也不会被转换),而不是双引号,它们可以包含变量来打印出它们的值。
Python恐怕不是。 从技术上看,没有$ token(或类似的)来从Python中的变量中分离名称/文本。 毕竟,这两个特性都使得Python更具可读性,而且更容易混淆。 单引号和双引号在Python中可以互换使用。
我选择使用双引号,因为他们更容易看到。
我只是使用当时想要的东西, 能够随心所欲地在两者之间切换是很方便的!
当然,在引用引号的时候,两者之间的切换可能并不是那么的异想天开。
你的团队的口味或你的项目的编码准则。
如果您处于多语言环境中,则可能希望鼓励使用与其他语言使用的字符串相同类型的引号。 否则,我个人最喜欢“
没有据我所知。 虽然如果你看一些代码,“”通常用于字符串的文本(我猜'在文本中比'更常见),“”出现在散列键和类似的东西。
我的目标是尽量减少像素和惊喜。 我通常更喜欢'
为了尽量减少像素,但"
而不是如果字符串有一个撇号,再次以最小化像素。然而,对于一个文档字符串,我更喜欢"""
,因为后者是非标准的,不常见的,因此令人惊讶。 如果现在我有一堆字符串,我使用了"
按照上述逻辑,但也有一个可以摆脱'
,我可能仍然使用"
,以保持一致性,只是为了最大限度地减少惊喜。
也许这有助于以下列方式来考虑像素最小化原则。 你宁愿英文字母看起来像ABC
还是AA BB CC
? 后者的选择浪费了50%的非空像素。
我使用双引号,因为除了Bash,我已经在大多数语言(C ++,Java,VB …)中使用了多年,因为我在正常文本中也使用了双引号,并且因为我使用了(修改的)非英文键盘两个字符都需要shift键。
'
= "
/
= \
= \\
例如:
f = open('c:\word.txt', 'r') f = open("c:\word.txt", "r") f = open("c:/word.txt", "r") f = open("c:\\\word.txt", "r")
结果是一样的
= >>不,他们不一样。 一个反斜杠将转义字符。 在这个例子中你碰巧碰巧因为\k
和\w
不是像\t
或\n
这样的有效转义符,或者是\\
或\"
如果你想使用单个反斜杠(并将它们解释为这样),那么你需要使用“原始”字符串。 你可以通过在字符串前面加一个' r
'来做到这一点
im_raw = r'c:\temp.txt' non_raw = 'c:\\temp.txt' another_way = 'c:/temp.txt'
就Windows中的路径而言,正斜杠是以相同的方式解释的。 显然,字符串本身是不同的。 我不能保证他们在外部设备上以这种方式处理。