実例を通してPython str()とrepr()の違いを理解する。
この文章は主に実例を通してPython str()とrepr()の違いを知ることを紹介しています。ここではサンプルコードを通して紹介された非常に詳細で、皆さんの学習や仕事に対して一定の参考学習価値を持っています。必要な友達は下記を参照してください。
違います
実は用途は最大の違いです。str()は主にエンドユーザのためにいくつかの情報を出力するために使われますが、repr()は主にデバッグに使われます。同時に後者の目標は幾つかの曖昧性(例えば浮動小数点の精度問題)を除去するためであり、前者は主に読み取り可能である。
使用
実現する
両方とも内蔵関数で実現します。公式文書を見てrepr()を言います。
Return a string containing a printable representation of an object.
A class can control what this function returns for its instancs by defining a_urepr_()method.
この関数をカスタマイズして、自分のrepr()を実現できるという意味で、以下のようになります。
違います
実は用途は最大の違いです。str()は主にエンドユーザのためにいくつかの情報を出力するために使われますが、repr()は主にデバッグに使われます。同時に後者の目標は幾つかの曖昧性(例えば浮動小数点の精度問題)を除去するためであり、前者は主に読み取り可能である。
使用
In [12]: s = 'abc'
In [13]: print(str(s))
abc
In [14]: print(2.0/11)
0.18181818181818182
In [15]: repr(s)
Out[15]: "'abc'"
In [16]: repr(2.0/11)
Out[16]: '0.18181818181818182'
よく見ると、精度の違いは生まれていません。しかしPython 2では違いが発見されます。
>>> eval('2.0/11')
0.18181818181818182
>>> print(2.0/11)
0.181818181818
だから、別の例を示します。
In [17]: import datetime
In [18]: n = datetime.datetime.now()
In [19]: print(str(n)
...: )
2020-01-16 09:22:13.361995
In [20]: repr(n)
Out[20]: 'datetime.datetime(2020, 1, 16, 9, 22, 13, 361995)'
前者の読み取り可能性がより良く、後者はタイプと値をプリントアウトし、より調整に適していることが見られます。実現する
両方とも内蔵関数で実現します。公式文書を見てrepr()を言います。
Return a string containing a printable representation of an object.
A class can control what this function returns for its instancs by defining a_urepr_()method.
この関数をカスタマイズして、自分のrepr()を実現できるという意味で、以下のようになります。
In [35]: class TestClass:
...: def __init__(self, name, age):
...: self.name = name
...: self.age = age
...: def __repr__(self):
...: return 'repr: ' + self.name + ' ,' + self.age
...: def __str__(self):
...: return self.name + ' ,' + self.age
...:
In [38]: tt = TestClass('tony', '23')
In [39]: repr(tt)
Out[39]: 'repr: tony ,23'
In [40]: str(tt)
Out[40]: 'tony ,23'
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。