On 9/29/05, Raymond Hettinger <[EMAIL PROTECTED]> wrote: > FWIW, I scanned the standard library for all the and/or pairings where a > conditional expression was applicable. This sampling can serve as a > reference for what "typical" uses would look like in real Python code as > created by a number of different authors. > > It only takes about five minutes to try out a given syntax proposal on > all the fragments listed below. That short exercise provides an > excellent insight into the look and feel of each proposal in real world > code.
I did this for my favorite proposal, and ended up with the list shown further down below. I think they all looks great! The only problem is that it's not easy to come up with a regex-based way to transform C and X or Y into X if C else Y because it's hard to determine where C starts. So I recommend that people leave existing and/or code alone but start writing if/else expressions in new code only. After all there's nothing wrong with and/or. cgitb.py: file = os.path.abspath(file) if file else '?' cgitb.py: formatter = html if self.format == "html" else text compileal1.py: cfile = fullname + ('c' if __debug__ else 'o') csv.py: a if (quotes[a] > quotes[b]) else b, quotes.keys()) csv.py: a if (delims[a] > delims[b]) else b, delims.keys()) csv.py: modes[char] = reduce(lambda a, b: a if a[1] > b[1] else b, DocXMLRPCServer.py: anchor = (cl.__name__ if cl else '') + '-' + name fileinput.py: "*" if isfirstline() else "", line) formatter.py: self.writer.send_paragraph((1) if blankline else 0) gettext.py: __builtin__.__dict__['_'] = self.ugettext if unicode else self.gettext imaplib.py: l = map(lambda x:'%s: "%s"' % (x[0], '" "'.join(x[1]) if x[1][0] else ''), l) imputil.py: _suffix_char = 'c' if __debug__ else 'o' keyword.py: iptfile = args[0] if args else "Python/graminit.c" pickle.py: self.write(NEWTRUE if obj else NEWFALSE) pickle.py: self.write(TRUE if obj else FALSE) pickletools.py: "<unknown>" if pos is None else pos, py_compile.py: cfile = file + ('c' if __debug__ else 'o') pydoc.py: return re.sub('^ *\n', '', rstrip(result)) if result else '' pydoc.py: anchor = (cl.__name__ if cl else '') + '-' + name pydoc.py: lhs = '<strong>%s</strong> = ' % name if name else '' pydoc.py: contents = [doc + '\n'] if doc else [] pydoc.py: line = (name + ' = ' if name else '') + repr pydoc.py: line = (self.bold(name) + ' = ' if name else '') + repr pydoc.py: host = '127.0.0.1' if (sys.platform == 'mac') else 'localhost' pydoc.py: font = ('helvetica', 8 if sys.platform == 'win32' else 10) robotp~1.py: return (self."Allow" if allowance else "Disallow")+": "+self.path telnet~1.py: 'DO' if cmd == DO else 'DONT', ord(opt)) telnet~1.py: 'WILL' if cmd == WILL else 'WONT', ord(opt)) thread~1.py: "s" if n!=1 else "") token.py: inFileName = args[0] if args else "Include/token.h" tokenize.py: yield (parenlev > NL if 0 else NEWLINE, unittest.py: return doc.split("\n")[0].strip() if doc else None unittest.py: return doc.split("\n")[0].strip() if doc else None unittest.py: (run, run != "s" if 1 else "", timeTaken)) urllib.py: safe_map[c] = c if (c in safe) else ('%%%02X' % i) urllib2.py: type = 'I' if file else 'D' xdrlib.py: print 'succeed' if pred(x) else 'failed', ':', x xmlrpclib.py: write("1" if value else "0") -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com