str () vs repr () funkcje w Pythonie 2.7.5 [duplikat]

To pytanie ma już odpowiedź tutaj:

Jaka jest różnica między funkcjami str() i repr() w Pythonie 2.7.5?

Wyjaśnienie na python.org:

Funkcja str() ma zwracać reprezentacje wartości, które są czytelny dla człowieka, natomiast repr() ma generować reprezentacje, które mogą być odczytane przez interpreter (lub wymusi SyntaxError, jeśli nie ma równoważnej składni)

Ale to nie było dla mnie jasne.

Niektóre przykłady:

>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'"      # repr is giving an extra double quotes
>>> str(1.0/7.0)
'0.142857142857'
>>> repr(1.0/7.0)
'0.14285714285714285'  # repr is giving value with more precision

Więc chcę wiedzieć co następuje

  1. Kiedy należy stosować str() i kiedy należy stosować repr()?
  2. w jakich przypadkach mogę użyć któregokolwiek z nich?
  3. What can str() do which repr() nie możesz?
  4. co potrafi repr() czego nie potrafi?
Author: Martijn Pieters, 2013-10-12

1 answers

Kiedy należy użyć str (), a kiedy repr ()?

Prawie zawsze używaj str() podczas tworzenia wyjścia dla użytkowników końcowych.

repr() jest przydatny głównie do debugowania i eksploracji. Na przykład, jeśli podejrzewasz, że łańcuch znaków nie jest drukowany lub zmiennoprzecinkowy ma mały błąd zaokrąglenia, repr() pokaże ci; str() może nie.

repr() może być również przydatny do generowania liter do wklejenia do kodu źródłowego. Może być również stosowany do trwałości (z ast.literal_eval lub eval), ale rzadko jest to dobry pomysł-jeśli chcesz edytowalne wartości, coś jak JSON lub YAML jest znacznie lepsze, a jeśli nie planujesz ich edytować, użyj pickle.

2.In które sprawy mogę wykorzystać ?

Możesz ich używać prawie wszędzie. nie powinieneś używać ich ogólnie, z wyjątkiem przypadków opisanych powyżej.

3.Co może {[0] } zrobić, czego repr() nie może ?

Daje moc wyjściową str(['spam', 'eggs']) nie jest prawdopodobnie czymś, co chcesz umieścić w GUI), ale częściej niż repr().

4.Co może repr() zrobić, co {[0] }nie może

Daje wyjście, które jest przydatne do debugowania -- ponownie, nie zawsze (domyślne dla instancji klas utworzonych przez użytkownika jest rzadko pomocne), ale gdy jest to możliwe.

I czasami daje wyjście, które jest poprawnym dosłownym Pythonem lub innym wyrażeniem-ale rzadko chcesz na tym polegać, z wyjątkiem interaktywnych eksploracji.

 30
Author: abarnert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-21 20:29:16