关于格式字符串的简单python混淆

关于格式字符串的简单python混淆,python,Python,python新手,我正在学习本教程: 我就是不明白为什么“但它没有唱”这句话是用双引号打印出来的,而其他的都是用单引号打印出来的。。无法看到与代码的任何差异…值的表示形式应与生成该值所需的Python代码等效。因为字符串“但是它没有唱。”包含一个单引号,使用单引号来分隔它将创建无效代码。因此改用双引号。引号取决于字符串:如果没有引号,它将使用简单引号: >>> """no quotes""" 'no quotes' >>> """single quote:

python新手,我正在学习本教程:


我就是不明白为什么“但它没有唱”这句话是用双引号打印出来的,而其他的都是用单引号打印出来的。。无法看到与代码的任何差异…

值的表示形式应与生成该值所需的Python代码等效。因为字符串“但是它没有唱。”包含一个单引号,使用单引号来分隔它将创建无效代码。因此改用双引号。

引号取决于字符串:如果没有引号,它将使用简单引号:

>>> """no quotes"""
'no quotes'
>>> """single quote:'"""
"single quote:'"
如果有单引号,则将使用双引号:

>>> """no quotes"""
'no quotes'
>>> """single quote:'"""
"single quote:'"
如果有双引号,则将使用单引号:

>>> """no quotes"""
'no quotes'
>>> """single quote:'"""
"single quote:'"
“”双引号:“” ‘双引号:’

如果两者都有,它将使用单引号,从而转义单引号:

>>> """mix quotes:'" """
'mix quotes:\'" '
>>> """mix quotes:"' """
'mix quotes:"\' '
>>> '''mix quotes:"' '''
'mix quotes:"\' '
但是,打印字符串时不会有任何区别:

>>> print '''mix quotes:"' '''
mix quotes:"'
引号用于表示字符串:

>>> print str('''mix quotes:"' ''')
mix quotes:"'
>>> print repr('''mix quotes:"' ''')
'mix quotes:"\' '

您可能需要检查字符串上的python。

python有几个规则用于输出字符串的
repr

通常,它使用
来包围它们,除非其中有
,然后它使用
来消除引用的需要

如果字符串同时包含
'
和'
字符,它将使用
'
s并引用
'`

由于一个字符串可能有多个有效且等效的表示形式,因此这些RUE可能会因版本而异

顺便说一句,在你链接到的网站上,也给出了答案:

问:
%r
当我用双引号写东西时,为什么有时候用单引号打印

答:Python将以最有效的方式打印字符串,而不是完全复制您编写字符串的方式。这非常好,因为
%r
用于调试和检查,所以它不需要漂亮


“使用单引号分隔将创建无效代码”的可能重复有点误导。当然,转义是必要的,使用
可以消除转义的需要并使内容更可读。感谢您提供的详细答案,也感谢其他回复者