Python字符串函数-str()和repr()
示例
有两个函数可用于获取对象的可读表示。
repr(x)来电:代表。通常会将此函数的结果转换回原始对象。x.__repr__()xeval
str(x)Calls:描述对象的人类可读字符串。这可能会漏掉一些技术细节。x.__str__()
repr()
对于许多类型,此函数会尝试返回一个字符串,当传递给时,该字符串将产生一个具有相同值的对象eval()。否则,表示形式是用尖括号括起来的字符串,其中包含对象类型的名称以及其他信息。这通常包括对象的名称和地址。
str()
对于字符串,这将返回字符串本身。和之间的区别在于repr(object),str(object)并非总是尝试返回可接受的字符串eval()。相反,其目标是返回可打印或“人类可读”的字符串。如果未提供任何参数,则返回空字符串''。
范例1:
s = """w'o"w""" repr(s) # Output: '\'w\\\'o"w\'' str(s) # Output: 'w\'o"w' eval(str(s)) == s #给出一个SyntaxError eval(repr(s)) == s #输出:真
范例2:
import datetime today = datetime.datetime.now() str(today) #输出:'2016-09-1506:58:46.915000' repr(today) #输出:'datetime.datetime(2016,9,15,15,6,58,46,915000)'
编写类时,您可以覆盖以下方法以执行所需的任何操作:
class Represent(object): def __init__(self, x, y): self.x,self.y= x, y def __repr__(self): return "Represent(x={},y=\"{}\")".format(self.x, self.y) def __str__(self): return "Representing x as {} and y as {}".format(self.x, self.y)
使用上面的类,我们可以看到结果:
r = Represent(1, "Hopper") print(r) #打印__str__ print(r.__repr__) # prints __repr__: '<bound methodRepresent.__repr__of Represent(x=1,y="Hopper")>' rep = r.__repr__() #将__repr__的执行设置为新变量 print(rep) # prints 'Represent(x=1,y="Hopper")' r2 = eval(rep) #评价代表 print(r2) #打印__str__ from new object print(r2 == r) #打印“False”,因为它们是不同的对象