Python中的单引号与双引号

时间:2020-03-05 18:51:17  来源:igfitidea点击:

根据文档,它们几乎可以互换。是否有出于某种风格的原因要在一个之上使用另一个?

解决方案

回答

团队的品味或者项目的编码准则。

例如,如果我们处于多语言环境中,则可能希望鼓励对其他语言使用的字符串使用相同类型的引号。另外,我个人最喜欢"

回答

据我所知没有。尽管如果看一些代码,""通常用于文本字符串(我猜想'在文本内部比'更为常见),并且''出现在哈希键之类的东西中。

回答

如果字符串包含一个,则应使用另一个。例如,"我们可以执行此操作"或者"他说"嗨!""。除此之外,我们应该尽可能地保持一致(在模块内,包内,项目内,组织内)。

如果代码将被使用C / C ++的人阅读(或者如果我们在这些语言和Python之间切换),那么对单个字符字符串使用'',对于较长的字符串使用`""简化过渡。 (与以下其他不可互换的语言一样)。

我在野外看到的Python代码倾向于偏爱"而不是'``,只是略微偏偏。一个例外是""" these""""比'''these'更常见'',从我所看到的。

回答

我通常使用双引号,但出于某些特定原因而不要使用双引号可能只是出于Java的习惯。

我猜我们比起双引号,我们更可能希望在内联文字字符串中使用撇号。

回答

我曾经更喜欢',尤其是对于''''''docstrings''',因为我发现"""这会产生一些绒毛"""`。另外,在我的瑞士德语键盘上,不用Shift键也可以键入``。

从那以后,我已更改为对"""" docstrings"""`使用三引号,以符合PEP 257.

回答

我喜欢在用于插值或者自然语言消息的字符串周围使用双引号,而对于像符号一样小的字符串使用单引号,但是如果字符串包含引号或者我忘记了,则会违反规则。我对文档字符串使用三重双引号,对正则表达式使用原始字符串文字,即使不需要它们也是如此。

例如:

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

回答

我与Will在一起:

  • 文字双引号
  • 行为类似于标识符的任何东西都用单引号引起来
  • 正则表达式的双引号原始字符串文字
  • 文档字符串三重双引号

我会坚持下去,即使这意味着很多逃避。

从引号引起来的单引号标识符中,我获得了最大的价值。其余的做法只是为了给那些用单引号引起来的标识符留出一定的空间。

回答

风格上的偏爱可能比什么都重要。我只是检查了PEP 8,却没有提到单引号和双引号。

我更喜欢单引号,因为它只有一个击键而不是两个击键。也就是说,我不必混入Shift键即可制作单引号。

回答

在https://docs.python.org/2.0/ref/strings.html引用官方文档:

In plain English: String literals can be enclosed in matching single quotes (') or double quotes (").

因此没有区别。取而代之的是,人们会告诉我们选择与上下文匹配且一致的样式。我同意,并补充说,为这种事情想出"惯例"是没有意义的,因为这样只会使任何新来者感到困惑。

回答

我个人坚持一个或者另一个。没关系提供我们自己的意思来引用任何一种,只是在我们进行协作时使其他人感到困惑。

回答

我选择使用双引号,因为它们更易于查看。

回答

我只是想用当时能打动我的东西。能够一时之间在两者之间切换很方便!

当然,当引用报价字符时,毕竟在两者之间切换可能并不是那么古怪……

回答

用三引号引起来的评论是这个问题的一个有趣的子主题。 PEP 257指定文档字符串的三引号。我使用Google代码搜索进行了快速检查,发现Python中的三重双引号是-1.3M的三重双引号的10倍,而在Google索引的代码中则是131K。因此,在多行情况下,如果使用三重双引号,代码可能会变得更加熟悉。

回答

'="

/=\=\\

例子 :

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

回答

In Perl you want to use single quotes when you have a string which doesn't need to interpolate variables or escaped characters like \n, \t, \r, etc.

PHP与Perl的区别相同:单引号中的内容将不被解释(甚至不会转换\ n),而双引号中可以包含变量以显示其值。

恐怕Python不会。从技术上看,在Python中没有$令牌(或者类似符号)可将名称/文本与变量分开。毕竟,这两个功能使Python更具可读性,减少了混乱。单引号和双引号可以在Python中互换使用。

回答

我使用双引号,是因为除Bash之外,大多数语言(C ++,Java,VB)都已经使用多年了,因为我也在普通文本中使用双引号,并且因为我使用的是(修改的)非英语键盘字符需要使用Shift键。