Aufbauend auf den vorherigen Antworten und Zeigen einiger weiterer Beispiele. Bei sachgemäßer Verwendung ist der Unterschied zwischen strund reprklar. Kurz gesagt, reprsollte eine Zeichenfolge zurückgegeben werden, die kopiert werden kann, um den genauen Status des Objekts wiederherzustellen, während strdies für das Debuggen loggingund observingDebuggen von Ergebnissen nützlich ist . Hier sind einige Beispiele, um die verschiedenen Ausgaben für einige bekannte Bibliotheken zu sehen.
Terminzeit
print repr(datetime.now())
print str(datetime.now())
Das strist gut, um in eine Protokolldatei zu drucken, wo reprdies zweckentfremdet werden kann, wenn Sie es direkt ausführen oder als Befehle in eine Datei kopieren möchten.
x = datetime.datetime(2017, 12, 12, 18, 49, 27, 134411)
Numpy
print repr(np.array([1,2,3,4,5]))
print str(np.array([1,2,3,4,5]))
in Numpy reprist das wieder direkt verbrauchbar.
Beispiel für einen benutzerdefinierten Vektor3
class Vector3(object):
def __init__(self, args):
self.x = args[0]
self.y = args[1]
self.z = args[2]
def __str__(self):
return "x: {0}, y: {1}, z: {2}".format(self.x, self.y, self.z)
def __repr__(self):
return "Vector3([{0},{1},{2}])".format(self.x, self.y, self.z)
In diesem Beispiel wird reprerneut eine Zeichenfolge zurückgegeben, die direkt verwendet / ausgeführt werden kann, während strdies als Debug-Ausgabe nützlicher ist.
v = Vector3([1,2,3])
print str(v)
print repr(v)
Eine Sache, die Sie beachten sollten , wird automatisch aufgerufen , wenn sie strnicht definiert reprist . Es ist also immer gut, zumindest zu definierenstrreprrepr