Python str() と repr() の違いについての簡単な説明

 

この記事では主に Python str() と repr() の違いを例を通して紹介します。この記事ではサンプル コードが詳しく紹介されています。すべての人の勉強や仕事に一定の参考学習価値があります。必要な友人は以下を参照してください。

この記事では主に Python str() と repr() の違いを例を通して紹介します。この記事ではサンプル コードが詳しく紹介されています。すべての人の勉強や仕事に一定の参考学習価値があります。必要な友人は以下を参照してください。

違い

実際、最大の違いは実用性です: str() は主にエンド ユーザー向けの情報を出力するために使用されますが、repr() は主にデバッグに使用されます; 同時に、後者の目的はいくつかの曖昧さを排除することです (浮動小数点数の精度など)、前者は主に読みやすさのためです。

使用

1

2

3

4

5

6

7

8

9

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'

よく見ると実際には精度に違いはありませんが、Python2 を使用すると違いがわかります。

1

2

3

4

>>> eval('2.0/11')

0.18181818181818182

>>> print(2.0/11)

0.181818181818

別の例:

1

2

3

4

5

6

7

8

9

10

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() を参照してください。

オブジェクトの印刷可能な表現を含む文字列を返します。

クラスは、 __repr__() メソッドを定義することで、この関数がそのインスタンスに何を返すかを制御できます。

これは、次のように、この関数をカスタマイズして独自の repr() (str も同様) を実装できることを意味します。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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'

以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです

出典: Weidian Reading    https://www.weidianyuedu.com

おすすめ

転載: blog.csdn.net/weixin_45707610/article/details/131782485