3 ms·
Interesting! I figured the `as` in a `with` statement was handled uniquely, but I learned something new about Python today: x = open('filename') x.closed
by glifchits 8y ago
Interesting! I figured the `as` in a `with` statement was handled uniquely, but I learned something new about Python today:
x = open('filename')
x.closed # False
with x:
print(x.readline())
x.closed # True
I think you're right. I prefer the `as` variant for readability.
- zb 8y agoIt's the same for classes that define it like: def __enter__(self): return self which is a common pattern (used by open()), but there's no requirement that __enter__() return the same object. In cases where __enter__() does something different, the assignment expression and the 'as' variable would have different values (the object of the 'with' statement, x, and the result of calling x.__enter__(), respectively).