我目前正在阅读“Zed,Shaw的艰难学习Python”一书中的练习 虽然作者指出他的书是针对Python 2.x的,但我正在设法将书中的语法转换为python 3标准。
但是,有一件奇怪的事情。在他正在解释%r的不同用法的练习中,解释器用双引号打印其中一个字符串值,而其他字符串用单引号打印。以下是代码:
formatter = " %r %r %r %r"
print (formatter % ( "I had this thing",
"That you could type up right.",
"But it didn't sing.",
"So I said goodnight."))
代码工作正常,只是在解释器中,输出读取:
'我有这个东西','你可以输入正确的。' “但我没唱歌。” “所以我说晚安。”
如您所见,第三个值打印在双引号内。怎么样?
我正在使用notepad ++,python 3和Windows Powhershell。 谢谢
答案 0 :(得分:2)
“但它没有唱歌。”因为这个字符串包含单引号,所以它被打印在双引号内。
此外,%r将插入对象的规范字符串表示(即repr(o))
要详细了解 repr(),请阅读Python3官方文档:https://docs.python.org/3/library/functions.html#repr