Python 什么';%r和repr()之间的区别是什么?

Python 什么';%r和repr()之间的区别是什么?,python,Python,我想知道是否有人能解释一下这两种表示法%r和repr() 但是当使用 >>> '%r' % tuple() {TypeError}not enough arguments for format string 从理论上讲,两者之间应该没有区别。但是,%语法接受一个元组,并遍历其内容。您的第二个示例提供了一个空元组,它不能被迭代,因为没有元素!repr函数没有这样的规定,因为它只是接收一个对象,而不是一个元组进行迭代。如果运行,您将看到相同的结果 '%r' % (tuple(),

我想知道是否有人能解释一下这两种表示法
%r
repr()

但是当使用

>>> '%r' % tuple()
{TypeError}not enough arguments for format string

从理论上讲,两者之间应该没有区别。但是,
%
语法接受一个元组,并遍历其内容。您的第二个示例提供了一个空元组,它不能被迭代,因为没有元素!
repr
函数没有这样的规定,因为它只是接收一个对象,而不是一个元组进行迭代。如果运行,您将看到相同的结果

'%r' % (tuple(),)

使用基于
%
的字符串格式时,它会接受一系列参数。您向它传递了一个空元组,它被解释为参数序列。因为它是空的,并且您的格式规范指定了一个参数,所以它会抛出一个错误。您可能不应该使用基于
%
的字符串格式,而应该使用
.format
或f-strings。
repr()
是一个函数(可以与
print()
进行比较)<代码>%r是一个格式化选项。您需要空元组中的一个元组:
“%r%”(tuple(),)
'%r' % (tuple(),)