SageDevs, In the interest of "gotchas", please consider the following:
The built-in str, and the module string are different, though both return type str according to type(). Example: d...@dv9000-laptop:~$ python2.6 Python 2.6.4 (r264:75706, Dec 7 2009, 18:43:55) [GCC 4.4.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from copy import copy,deepcopy >>> import string >>> a = '12 3 four five six' >>> a is copy(a) is deepcopy(a) True >>> a == copy(a) == deepcopy(a) True >>> b = string.lower(a) >>> a '12 3 four five six' >>> a is b False >>> a == b True >>> type(a) <type 'str'> >>> type(b) <type 'str'> >>> c = copy(a) >>> c is a True >>> d = deepcopy(a) >>> d is a True >>> hash(a) == hash(b) True >>> id(a) == id(b) False >>> id(a) == id(c) == id(d) True >>> id(a) is id(c) is id(d) False >>> hash(a) == hash(b) == hash(c) == hash(d) True >>> hash(a) is hash(b) is hash(c) is hash(d) False >>> type(a) == type(b) == type(c) == type(d) True >>> type(a) is type(b) is type(c) is type(d) True >>> So, I think the take home message is that the keyword "is" is fragile in some cases. Also, the return value of type() is misleading. http://docs.python.org/release/2.6.5/reference/lexical_analysis.html#identifiers Cheers, Don -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org