On Thu, Apr 1, 2010 at 8:54 PM, Bruce Leban bruce@leapyear.org wrote:
I think this is a great idea, but I would not want to introduce a new keyword. How about foo is in bar = hasattr(foo,bar) foo is not in bar = not hasattr(foo,bar) But there are other common checks I do all the time that I would really like to have shortcuts for. Here are ways to do them without new keywords: foo is class bar = isinstance(foo,bar) foo is from bar = issubclass(foo,bar) foo is with bar = type(foo) == type(bar) Can we make an exception to the moratorium, just for today?
I hope so! I'm tossing in a few more suggestions that would make some idioms more intuitive:
* iterable except for item := (x for x in iterable if x!=item)
* pass from iterable := for i in iterable: pass
* global return value := sys.exit(value)
* import obj in module as name
import module setattr(module, name, obj) del module
* not raise: BLOCK
try: BLOCK except: pass
* with x as is: BLOCK
_x = deepcopy(x) try: BLOCK finally: x = _x; del _x
* try for i in iterable: BLOCK1 else: BLOCK2
for i in iterable: try: BLOCK1; break except: pass else: BLOCK2
George