On May 24, 7:12 am, Johannes Bauer <[EMAIL PROTECTED]> wrote: > Carl Banks schrieb: > > > p = myfunction() > > if p: > > print p > > > (I recommend doing it this way in C, too.) > > This is okay for if-clauses, but sucks for while-loops: > > while (fgets(buf, sizeof(buf), f)) { > printf("%s\n", buf); > > }
In earlier times, the Python idiom was this: while True: line = f.readline() if not line: break print line Not the prettiest thing ever, but it works fine, is readable, and avoids a temporary variable. In C, given the choice between this or using assignment expression, I'd say use either one. (But don't use the version with a temporary, that's ugly as hell.) More recent versions of Python have obviated the need to use this idiom by making it possible to iterate over the lines of a file directly. First they added xreadlines: for line in xreadlines(f): print line Then they deprecated the xreadline function and made it a method: for line in f.xreadlines(): print line Then they recommended you no longer use that, and just made file objects directly iterable: for line in f: print line The point is, the Python language developers do share your concern about these things. However, they still think assignment epxressions are a very bad idea, so they've sought other solutions to these issues. (But, as I said, they have yet to provide an alternative for elif clauses; you're stuck with workarounds there.) Carl Banks -- http://mail.python.org/mailman/listinfo/python-list