Having just pulled my hair off because of a difference, I\'d like to know what the difference really is in Python 2.5.
I had two blocks of code (dbao.
It may be a little confusing at first glance, but
with babby() as b:
...
is not equivalent to
b = babby()
with b:
...
To see why, here's how the context manager would be implemented:
class babby(object):
def __enter__(self):
return 'frigth'
def __exit__(self, type, value, tb):
pass
In the first case, the name b
will be bound to whatever is returned from the __enter__
method of the context manager. This is often the context manager itself (for example for file objects), but it doesn't have to be; in this case it's the string 'frigth'
, and in your case it's the database cursor.
In the second case, b
is the context manager object itself.