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