str () vs repr () funkcje w Pythonie 2.7.5 [duplikat]
To pytanie ma już odpowiedź tutaj:
- różnica między _ _ str _ _ i _ _ repr__? 21 odpowiedzi
Jaka jest różnica między funkcjami str()
i repr()
w Pythonie 2.7.5?
Wyjaśnienie na python.org:
Ale to nie było dla mnie jasne.Funkcja
str()
ma zwracać reprezentacje wartości, które są czytelny dla człowieka, natomiastrepr()
ma generować reprezentacje, które mogą być odczytane przez interpreter (lub wymusiSyntaxError
, jeśli nie ma równoważnej składni)
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
- Kiedy należy stosować
str()
i kiedy należy stosowaćrepr()
? - w jakich przypadkach mogę użyć któregokolwiek z nich?
- What can
str()
do whichrepr()
nie możesz? - co potrafi
repr()
czego nie potrafi?
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.
Możesz ich używać prawie wszędzie. nie powinieneś używać ich ogólnie, z wyjątkiem przypadków opisanych powyżej.2.In które sprawy mogę wykorzystać ?
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.
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