在Python中,%r和%s都是用来格式化字符串的常见符号,但它们在使用和输出方面还是存在一些区别的。
%s打印输出的是字符串,而%r打印输出的是Python的原始表示方法。这是因为%r可以打印出字符串中的特殊字符,例如制表符、换行符和引号等,而%s只会把字符串打印出来,不会显示原始表示。以下是一个例子:
>>> s = 'Python中%r和%s的详解及区别'
>>> print(s)
Python中%r和%s的详解及区别
>>> print(%s)
TypeError: not all arguments converted during string formatting
>>> print(%r)
'Python中%r和%s的详解及区别'
在使用过程中,%r可以更精确的重现数据,不受变量类型的限制,而%s只能格式化为字符串。以下是一个例子:
>>> print(%r % (1,2,3))
(1, 2, 3)
>>> print(%s % (1,2,3))
TypeError: %d format: a number is required, not tuple
除此之外,%r还有一种用法——调试输出。在调试时,我们通常需要查看程序中的变量值,可以使用%r来输出复杂数据类型的变量,例如列表、字典和类实例等。以下是一个例子:
>>> data = {'name': 'Tom', 'age': 18}
>>> print(%r % data)
{'name': 'Tom', 'age': 18}
综上所述,%r和%s在Python中都有它们的使用场景,使用时需根据具体情况选择合适的符号进行格式化输出。