str은 실제 객체의 값과 다를 수가 있습니다.
eval(repr(obj))는 실제 obj와 동일한 값을 생성할 수 있어야 합니다.
하지만 eval(str(obj))는 실제 obj와 동일한 값이 아니거나, 오류를 내는 경우가 있을 수 있습니다.
eval()는 string형식으로 받은 문자열을 그대로 실행해준다.
ascii()은 아스키에 해당하는 문자열에 대해서 정확히 동일한 값을 반환한다. 다만 아스키 이외의 값에 대해서는 백슬래시를 사용한 유니코드값을 반환한다.
>>> f = 0.3
>>> f
0.29999999999999999
>>> print f
0.3
>>> print repr(f)
0.29999999999999999
>>> print str(f)
0.3