在Python中的reprlib模块
在下面的教程中,我们将通过示例来了解Python编程语言中的reprlib模块。
所以,让我们开始吧。
了解Python中的reprlib模块
Python的reprlib模块提供了一种以限制结果字符串大小的方式生成对象表示的方法。这在Python调试器中使用,并且在其他情况下也可能有益。
该模块提供了一个类、一个实例和一个函数。
class reprlib.Repr
这个类提供了有益于实现类似于内置的repr()函数的函数的格式化服务。该类还对各种对象类型有大小限制,以避免生成过长的表示。
reprlib.aRepr
aRepr 是 Repr 的一个对象,用于提供下面所示的 repr() 函数。改变该对象的属性将影响repr()函数和Python调试器使用的大小限制。
reprlib.repr(obj)
repr() 是 aRepr 的一个方法。然而,该方法返回一个类似于同名内置函数返回的字符串,但对大多数大小进行了限制。
此外,除了大小限制工具,该模块还提供了一个装饰器来检测对 __repr__() 的递归调用,并替换为占位符字符串。
@reprlib.recursive_repr(fillvalue = ‘…’)
这是一个装饰器,用于检测同一线程中 __repr__() 方法的递归调用。如果进行了递归调用,则返回 fillvalue ;否则进行正常的 __repr__() 调用。
让我们来看看下面的示例:
示例:
# importing the required module
from reprlib import recursive_repr
# defining the class
class TheList(list):
# using the decorator
@recursive_repr()
# defining the function
def __repr__(self):
return '<' + '|'.join(map(repr, self)) + '>'
# instantiating the class
one = TheList('abc')
# appending elements to the list
one.append(one)
one.append('x')
# printing the final list
print(one)
输出:
<'a'|'b'|'c'|...|'x'>
说明:
在上面的代码片段中,我们导入了所需的模块并定义了一个名为TheList
的类。然后我们使用装饰器并将函数定义为__repr__()
,该函数返回fillvalue
。然后我们实例化了该类并向列表中添加了元素。最后,我们打印了该列表。
了解Repr对象
Repr 对象提供了不同的属性,我们可以使用这些属性为不同的对象类型提供大小限制,并且还提供了格式化特定对象类型的方法。
序号 | 方法/变量 | 描述 |
---|---|---|
1 | Repr.maxlevel | 这个对象类型表示递归表示的深度限制。默认值为6。 |
2 | Repr.maxlong | 这个对象类型包含表示long值的最大数。默认值为40。 |
3 | Repr.maxstring | 这个对象类型限制了字符串类型对象中的字符数。默认值为30。 |
4 | Repr.maxother | 这个对象类型限制了一些其他数据的大小,其中格式没有指定。 |
5 | Repr.repr(obj) | 这个方法和内置的repr()方法具有相同的目的。 |
6 | Repr.repr1(obj, level) | 这个方法是repr()方法的递归实现。此外,我们还需要指定递归输出的层级。 |
对于字典、列表、元组、集合、数组等等,还有一些其他的最大限制。
让我们来考虑一个示例,演示了对 Repr 对象的使用。
示例:
# importing the required modules
import reprlib
import math
# creating a list of factorials using the functions of the math library
factList = [math.factorial(x) for x in range(100)]
print(reprlib.repr(factList))
# creating the Repr object and set long size to 15
myRept = reprlib.Repr()
# using maxlong
myRept.maxlong = 15
print(myRept.repr(factList[53]))
输出:
[1, 1, 2, 6, 24, 120, ...]
427488...000000
说明:
在上面的代码片段中,我们导入了所需的库,并定义了一个包含从0到100的数字的阶乘的列表,并打印了 repr() 函数的值。我们创建了一个 Repr 对象,并使用 maxlong 对象类型将长整型的大小设置为15。最后,我们再次打印 repr() 函数的结果。