On 31Aug2010 22:53, MRAB <pyt...@mrabarnett.plus.com> wrote: [...] | >>>def m(arg): | >>>if arg& set([1,2,3]): | > | >set() is a function call, not a literal. When m is called, who knows | >what 'set' will be bound to? In Py3, at least, you could write {1,2,3}, | >which is much faster as it avoids creating and deleting a list. On my | >machine, .35 versus .88 usec. Even then, it must be calculated each time | >because sets are mutable and could be returned to the calling code. | > | There's still the possibility of some optimisation. If the resulting | set is never stored anywhere (bound to a name, for example) then it | could be created once. When the expression is evaluated there could be | a check so see whether 'set' is bound to the built-in class, and, if it | is, then just use the pre-created set.
Wouldn't you need to repeat that check every time, otherwise "set" may no longer be the builtin? -- Cameron Simpson <c...@zip.com.au> DoD#743 http://www.cskk.ezoshosting.com/cs/ >From sci.physics: t...@mailzone.com: The only problem is, how do you send a message from Earth to Mars instantly? Does anyone have any ideas about where we can start? John Baez <b...@math.mit.edu: Just use a coordinate system in which the point at which the message is received has the same t coordinate as the point at which the message was sent. -- http://mail.python.org/mailman/listinfo/python-list