Complex evaluation bug

Gary Herron gherron at islandtraining.com
Thu May 18 12:59:04 EDT 2006


of wrote:

>a = 1+3j
>complex(str(a))
>
>Why does this not work ? It should
>  
>
Says who? 

By normal conventions in Python, "str" attempts only to make a "nice" 
human readable representation.  The function "repr" is usually expected 
to provide output that can be parsed back into the original object.  
(Although for the  numeric complex type the two produce identical results.)

Further, constructors are rarely expected to parse a string 
representation to return an object.  The function "eval" is usually 
expected to provide that functionality.

So, putting them together, you could expect
    eval(repr(a))
to reproduce a, and in fact it does so.

Gary Herron




More information about the Python-list mailing list