PEP 308: more use cases

Andrew Koenig ark at research.att.com
Sun Feb 9 12:52:57 EST 2003


Dan> old:
Dan>     lines = (inFile and open(inFile) or sys.stdin).readlines()
Dan> new:
Dan>     lines = (inFile if open(inFile) else sys.stdin).readlines()

Two problems:

1) In the old version, if inFile is nonempty, and open(inFile) ever
returns None, it will call sys.stdin.readlines().  I don't know if
that condition is intentional, or even possible, because open(x)
raises an exception if x doesn't exist, but it's a potential hazard.

2) Even if open(inFile) never returns None, the rewrite is wrong -- it
   should be

         lines = (open(inFile) if inFile else sys.stdin).readlines()

-- 
Andrew Koenig, ark at research.att.com, http://www.research.att.com/info/ark




More information about the Python-list mailing list