问题
Are repr
and str
identical on Pythons built-in numeric types (int
, bool
, float
, and complex
), or are there (esoteric?) situations where the two may yield different results?
Related questions on SO (such as this one) focus on how __repr__
and __str__
may be implemented differently, and return different values for strings, but I can't find anything on the actual implementation on numbers.
回答1:
Your primary source of information on this is http://hg.python.org/cpython/file/tip/Objects
For example, in boolobject.c
:
PyTypeObject PyBool_Type = {
...stuff...
bool_repr, /* tp_repr */
...stuff...
bool_repr, /* tp_str */
so yes, they're guaranteed to be the same.
For floats, float_repr
is different from float_str
and depends on sys.float_repr_style
.
来源:https://stackoverflow.com/questions/13471581/are-repr-and-str-always-identical-on-pythons-builtin-numeric-types