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(),)