在Python中的reprlib模块

在Python中的reprlib模块

在下面的教程中,我们将通过示例来了解Python编程语言中的reprlib模块。

所以,让我们开始吧。

了解Python中的reprlib模块

Python的reprlib模块提供了一种以限制结果字符串大小的方式生成对象表示的方法。这在Python调试器中使用,并且在其他情况下也可能有益。

该模块提供了一个类、一个实例和一个函数。

class reprlib.Repr

这个类提供了有益于实现类似于内置的repr()函数的函数的格式化服务。该类还对各种对象类型有大小限制,以避免生成过长的表示。

reprlib.aRepr

aReprRepr 的一个对象,用于提供下面所示的 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() 函数的结果。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程