Nick Coghlan wrote: > The naming convention for 'do' is shown in the current PEP 343. The issue I've > noticed with it is that *functions* read well, but methods don't because things > get out of sequence. That is, "do locking(the_lock)" reads well, but "do > the_lock.locking()" does not. > > Whereas, using 'with', it can be written either way, and still read reasonably > well ("with locked(the_lock)", "with the_lock.locked()"). > > The 'with' keyword also reads better if objects natively support use in 'with' > blocks ("with the_lock", "with the_file"). > > Guido's concern regarding file objects being reused inappropriately can be dealt > with in the file __enter__ method: > > def __enter__(self): > if self.closed: > raise RuntimeError, "Cannot reopen closed file handle" > > For files, it may then become the common practice to keep pathnames around, > rather than open file handles. When you actually needed access to the file, the > existing "open" builtin would suffice: > > with open(filename, "rb") as f: > for line in f: > print line I think I'm starting to agree. Currently about +0.6 in favour of 'with' now, especially if this is to be almost exclusively a resource-acquisition statement, as all our use cases seem to be. -- Greg Ewing, Computer Science Dept, +--------------------------------------+ University of Canterbury, | A citizen of NewZealandCorp, a | Christchurch, New Zealand | wholly-owned subsidiary of USA Inc. | greg.ewing at canterbury.ac.nz +--------------------------------------+
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4