gherron at islandtraining.com
Fri Sep 28 09:06:55 CEST 2007
> I have been chasing a problem in my code since hours and it bolis down
> to this
> import marshal
> marshal.dumps(str(123)) != marshal.dumps(str("123"))
> Can someone please tell me why?
> str(123) == str("123")
> or are they different?
> it also means that
> if s = str(123)
> marshal.dumps(s) != marshal.dumps(marshal.loads(marshal.dumps(s)))
Any string in Python can be "interned" or not, the difference being
how/where the value is stored internally. The marshal module includes
such information in its output. What you are doing is probably
considered a misuse of the marshal module. I'd suggest using the pickle
(or cPickle) modules instead.
Here's the relevant part of the manual for marshal:
Indicates the format that the module uses. Version 0 is the
historical format, version 1 (added in Python 2.4) shares interned
strings and version 2 (added in Python 2.5) uses a binary format for
floating point numbers. The current version is 2
More information about the Python-list