我刚从Java背景开始从事Python的工作,并且注意到其他开发人员倾向于使用单引号(''
)而不是双引号(""
)来引用字符串。例如:
line1 = 'This is how strings typically look.'
line2 = "Not like this."
除了个人喜好之外,还有其他特殊原因吗?这是引用字符串的正确方法吗?具体来说,我想知道的是,是否存在某种类型的标准或公认的最佳实践来推动这种编码方式。
我刚从Java背景开始从事Python的工作,并且注意到其他开发人员倾向于使用单引号(''
)而不是双引号(""
)来引用字符串。例如:
line1 = 'This is how strings typically look.'
line2 = "Not like this."
除了个人喜好之外,还有其他特殊原因吗?这是引用字符串的正确方法吗?具体来说,我想知道的是,是否存在某种类型的标准或公认的最佳实践来推动这种编码方式。
Answers:
其他答案是正确的,因为这没有技术上的区别,但是我在几个开源项目中看到了一个非正式的样式规则:双引号用于最终可能对用户可见的字符串(无论是否需要)翻译)和单引号用于与代码本身的功能有关的字符串(例如dict键,正则表达式,SQL)。
这当然不是通用规则(甚至不是在PEP中编写的),因此就像编码的任何其他任意方面一样,它归结为局部规则。
请注意,PEP 8(写此答案时并未注意到)说:
本PEP对此不做任何建议。选择一条规则并坚持下去。但是,当字符串包含单引号或双引号字符时,请使用另一个以避免在字符串中使用反斜杠。它提高了可读性。
正如评论员指出的那样,这不一定是矛盾的,具体取决于您对“规则”的解释。不过,我建议的内容在报价的后半部分实际上并不起作用。
这很简单:
'
在需要双引号之前,最好使用Python (单引号)。
以下引用直接来自有关字符串文字的文档。
在Unicode字符串中可用。在Python 2中,前缀'b'或'B'被忽略;它表示文字应该在Python 3中变成字节文字(例如,当代码使用2to3自动转换时)。前缀“ u”或“ b”后可以带有前缀“ r”。
在三重引用的字符串中,允许(并保留)未转义的换行符和引号,但一行中三个未转义的引号会终止该字符串。(“引号”是用于打开字符串的字符,即“或”。)
Ruby
,实际上是单引号和双引号之间的技术差异。双引号支持字符串插值-单引号解析为文字。