4 ms·
Does this mean that I can write with file := open('filename'): data = file.read() instead of with open('filename') as file: data = fi
by Derbasti 8y ago
Does this mean that I can write
with file := open('filename'):
data = file.read()
instead of
with open('filename') as file:
data = file.read()
I don't know how I feel about this.
- glifchits 8y agoInteresting! 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).
- thomasahle 8y agoExactly. Using "as" everywhere might require some small backward incompatible changes to make sure semantics line up, but at least then we wouldn't have redundant syntax.