问题

在《笨方法学python》书中的习题9 打印,打印,打印 中,有下面问题

  1. 注意最后一行程序中既有单引号又有双引号,你觉得它是如何工作的?

原因很简单。

原因

程序输出是这样的:

'I had this thing.' 'That you could type up right.' "But it didn't sing." 'So I said goodnight.'

可以看到第三个字符串是双引号,其他都是单引号。是因为该字符串里面已经有单引号( didn't )了,所在python在外面给它用上了双引号。

如果用单引号包含它,就成了'But it didn't sing.'。python会认为'But it didn'是个字符串,Python并不知道如何处理该行余下的内容。

如图:

注意最后一行程序中既有单引号又有双引号.....

使用单引号的另外一种选择是,使用反斜线\对字符串中的引号进行转义,这样Python就会明白中间的单引号是字符串的一部分,而不是字符串的结束标记(同样对双引号也可以使用相同的方式进行转义):

注意最后一行程序中既有单引号又有双引号.....

总结

对于 %r 输出时自动添加引号,我认为默认输出添加单引号,如果字符里出现单引号,则输出时添加双引号。


参考:
《笨方法学Python》习题8 - 简书
笨办法学Python(八)