On Mon, 27 Mar 2006 11:08:36 -0300, Felipe Almeida Lessa <[EMAIL PROTECTED]> wrote:
> Em Seg, 2006-03-27 às 08:23 -0500, Dan Sommers escreveu: >> On Mon, 27 Mar 2006 14:52:46 +0200, >> Joel Hedlund <[EMAIL PROTECTED]> wrote: >> >> > ... According to PEP8 (python programming style guidelines) you should >> > use 'is' when comparing to singletons like None. I take this to also >> > include constants and such ... >> >> This does *not* also mean constants and such: >> >> Python 2.4.2 (#1, Feb 22 2006, 08:02:53) >> [GCC 4.0.1 (Apple Computer, Inc. build 5247)] on darwin >> Type "help", "copyright", "credits" or "license" for more information. >> >>> a = 123456789 >> >>> a == 123456789 >> True >> >>> a is 123456789 >> False >> >>> > Not those kind of constants, but this one: > Python 2.4.2 (#2, Nov 20 2005, 17:04:48) > [GCC 4.0.3 20051111 (prerelease) (Debian 4.0.2-4)] on linux2 > Type "help", "copyright", "credits" or "license" for more information. >>>> CONST = 123456789 >>>> a = CONST >>>> a == CONST > True >>>> a is CONST > True >>>> That's a little misleading, and goes back to the questions of "what is assignment in Python?" and "What does it mean for an object to be mutable?" The line "a = CONST" simply gives CONST a new name. After that, "a is CONST" will be True no matter what CONST was. Under some circumstances, I can even change CONST, and "a is CONST" will *still* be True. >>> CONST = range(22) >>> a = CONST >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] >>> a is CONST True >>> CONST[12] = 'foo' >>> a is CONST True >>> Right off the top of my head, I can't think of a way to make "a = b; a is b" return False. Regards, Dan -- Dan Sommers <http://www.tombstonezero.net/dan/> "I wish people would die in alphabetical order." -- My wife, the genealogist -- http://mail.python.org/mailman/listinfo/python-list