说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的 repr(object) 返回对象的可打印形式字符串。对于很多类型而言,本函数试图返回的字符串,会与将对象传给 eval() 所生成的结果相同。在本教程中,我们将通过示例学习Python repr() 函数。
它的语法形式是 repr(object)
传入的是一个任意的对象,返回的给定对象的可打印表示形式。对于许多类型,此函数尝试返回一个字符串,该字符串将在传递给 eval()
时生成具有相同值的对象,否则,表示是一个尖括号中的字符串,其中包含对象类型的名称以及其他信息,通常包括对象的名称和地址(见下例)。类对象可以通过定义特殊方法 _repr__()
方法来控制此函数为其实例返回的内容。
以下是定义了一个整型对象,我们用 repr()
返回它的打印形成(它是一个字符串),当我们将这个结果传给 eval()
时,它生成一个原来的整型对象:
n = 10
repr(n)
# '10'
eval(repr(n))
# 10
其他的一些案例:
repr(True)
# 'True'
repr(bool)
# "<class 'bool'>"
import math
repr(math)
# "<module 'math' from '../math.cpython-310-darwin.so'>"
repr(repr)
# '<built-in function repr>'
import pandas as pd
repr(pd.Series)
# "<class 'pandas.core.series.Series'>"
import numpy as np
repr(np.array([*'abc']))
# "array(['a', 'b', 'c'], dtype='<U1')"
repr(__name__)
# "'__main__'"
repr(int|str)
# 'int | str'
# 自定义类
class student:
pass
repr(student())
# '<__main__.student object at 0x7fec2f1d2080>'
__repr__()
对过特殊方法 __repr__()
可自定义对象的 repr()
返回值。
class Student(object):
def __init__(self, name):
self.name = name
def __repr__(self):
return repr(f'我是{self.name}')
me = Student('大明')
repr(me)
# "'我是大明'"
repr()
返回的有得于解释器读取的形式,string 格式,因此将 string 格式可以传给 eval()
进行执行。
如果我们使用 repr()
函数打印字符串,然后它会用一对引号打印,如果我们计算一个值,我们会得到比 str()
函数更精确的值。
以下是不同之处:
str()
用于为最终用户创建输出,而 repr()
主要用于调试和开发。 repr()
的目标是明确无误,str()
的目标是可读性。例如,如果我们怀疑一个浮点数有一个小的舍入误差,repr 将显示给我们,而 str 可能没有。repr()
计算对象的“正式”的字符串表示形式(包含该对象的所有信息的表示形式),str()
用于计算对象的“非正式”(友好的)字符串表示形式(用于打印该对象的表示形式)。print()
打印语句的 str()
内置特殊函数使用 __str__
显示对象的字符串表示形式,页 repr()
内置特殊函数使用 __repr__
以显示对象。例如:
import datetime
now = datetime.datetime.now()
# 打印日期时间对象的可读格式
print(now)
str(now)
# 2021-11-10 22:47:52.471301
# 打印日期时间对象的正式格式
repr(now)
# datetime.datetime(2021, 11, 10, 22, 47, 52, 471301)
repr 是 representation(描述、表现形式)的缩写,对象的 repr 的目的是返回可以包含在表达式中的字符串,其中同一对象的 str 是可以自然显示的字符串。
print(repr(a))
print('{!r}'.format(a))
print('%r'%a)
上边代码的 r 是 repr 的缩写。repr 在调试代码时最有用,尤其是在编写自己的自定义代码时。
更新时间:March 3, 2024, 1:20 p.m. 标签:python 字符串 打印