Hacker News new | ask | show | jobs
by glifchits 2913 days 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.
1 comments

It'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).