Понимание функции repr () в Python

repr(): оцениваемое строковое представление объекта (может «eval ()» его, что означает, что это строковое представление, которое оценивает объект Python)

Другими словами:

>>> x = 'foo'
>>> repr(x)
"'foo'"

Вопросов:

Почему я получаю двойные кавычки, когда я делаюrepr(x)? (Я не получаю их, когда я делаюstr(x))Почему я получаю'foo' когда я делаюeval("'foo'") а не х какой объект?