协慌网

登录 贡献 社区

单引号与 Python 中的双引号

根据文档,它们几乎可以互换。是否有风格上的理由使用一个而不是另一个?

答案

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

例如:

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