![](https://secure.gravatar.com/avatar/92136170d43d61a5eeb6ea8784294aa2.jpg?s=120&d=mm&r=g)
I think you probably mean something other than what you actually write. It doesn't really make sense for "any expression" as far as I can tell. What would it possibly mean to write:
with (2+2) as foo: print(foo)
I have occasionally thought it would be nice to do something like this (and I could, but I haven't, so I guess I don't think it that strongly):
@contextmanager ... def bind(val): ... yield val ... with bind(2+2) as four: ... print(four) ... 4
-- Keeping medicines from the bloodstreams of the sick; food from the bellies of the hungry; books from the hands of the uneducated; technology from the underdeveloped; and putting advocates of freedom in prisons. Intellectual property is to the 21st century what the slave trade was to the 16th.