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

时间:2014-12-31 08:21:03

标签: python

python新手,我正在学习本教程: http://learnpythonthehardway.org/book/ex8.html

我只是看不出为什么这行“但它没有唱歌”。用双引号打印出来,所有其他的都打印了单引号..看不出代码有什么不同......

3 个答案:

答案 0 :(得分:1)

值的表示应该等同于生成它所需的Python代码。由于字符串“但它没有唱歌”。包含单引号,使用单引号分隔它会创建无效代码。因此使用双引号。

答案 1 :(得分:1)

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

>>> """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 tutorial

答案 2 :(得分:0)

Python有几条输出repr字符串的规则。

通常情况下,它使用'来围绕它们,除非其中有' - 然后它使用"来消除引用的需要。

如果字符串同时包含'和“characters, it usess and quotes the“`。

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

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

  

问:为什么%r有时会用双引号打印单引号?

     

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