程序开发中什么是repr?

程序开发中什么是repr?,第1张

Repr就是模块中的属性。

全部模块都具有一个可用的 repr,但是你可以依据上述的属性设置,在模块的规格说明中更为显式地控制模块对象的 repr。

如果模块具有 spec (__spec__),导入机制将尝试用它来生成一个 repr。 如果生成失败或找不到 spec,导入系统将使用模块中的各种可用信息来制作一个默认 repr。 它将尝试使用 module.__name__, module.__file__ 以及 module.__loader__ 作为 repr 的输入,并将任何丢失的信息赋为默认值。

以下是所使用的确切规则:

如果模块具有 __spec__ 属性,其中的规格信息会被用来生成 repr。 被查询的属性有 "name", "loader", "origin" 和 "has_location" 等等。

如果模块具有 __file__ 属性,这会被用作模块 repr 的一部分。

如果模块没有 __file__ 但是有 __loader__ 且取值不为 None,则加载器的 repr 会被用作模块 repr 的一部分。

对于其他情况,仅在 repr 中使用模块的 __name__。

在 3.4 版更改: loader.module_repr() 已弃用,导入机制现在使用模块规格说明来生成模块 repr。

为了向后兼容 Python 3.3,如果加载器定义了 module_repr() 方法,则会在尝试上述两种方式之前先调用该方法来生成模块 repr。 但请注意此方法已弃用。

str与repr区别:

1、python中str函数通常把对象转换成字符串,即生成对象的可读性好的字符串,一般在输出文本时使用,或者用于合成字符串。str的输出对用户比较友好适合print输出。

2、pyton中repr函数将一个对象转成类似源代码的字符串,只用于显示。repr的输出对python友好,适合eval函数得到原来的对象。

3、在类中实现__str__和__repr__方法,就可以得到不同的返回,示例代码:

>>> class test(object):

    def __repr__(self):

        return "return test repr() string."

    def __str__(self):

        return "return test str() string."

>>> print(str(test()))

return test str() string.

>>> print(repr(test()))

return test repr() string.


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/22187.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-15
下一篇2023-02-15

发表评论

登录后才能评论

评论列表(0条)

    保存