单引号与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中的路径而言,正斜杠是以相同的方式解释的。 显然,字符串本身是不同的。 我不能保证他们在外部设备上以这种方式处理。