Charles Cazabon wrote: > Fredrik Lundh <[EMAIL PROTECTED]> wrote: > > next use case: > > > > print 'foo:', foo, 'bar:', bar, 'baz:', baz, > > if frobble > 0: > > print 'frobble', frobble > > else: > > print 'no frobble today' > > The need to print /and/ not add a newline isn't nearly as common. print() > could take a keyword parameter to skip the newline, or ... > > print('foo:', foo, 'bar:', bar, 'baz:', baz, > frobble and 'frobble: ' + frobble or 'no frobble today') > > Or the user can just use stdout.write and have full control.
Or you can easily refactor your code to do the print in one line: if frobble > 0: frobble_str = 'frobble: ' + frobble else: frobble_str = 'no frobble today' print('foo:', foo, 'bar:', bar, 'baz:', baz, frobble_str) or similarly: if frobble > 0: rest = ['frobble', frobble] else: rest = ['no frobble today'] print('foo:', foo, 'bar:', bar, 'baz:', baz, *rest) I don't know which refactoring you'd prefer, but there are at least a few options here. In the first one you have to be careful to add the extra space yourself. In the second one, you have to know how *args work. But I would claim that the extra mental burden of manually adding a space or understanding *args is about equivalent to the current mental burden of print's trailing-comma behavior. I also find it more obvious in both refactored examples that the print produces exactly one line. Of course, there are examples that don't refactor so easily. Here's one: for i, obj in enumerate(objs): # do stuff print i, obj, # do more stuff print If the "do stuff" and "do more stuff" sections are empty, you can write it as something like: print(*[item for tup in enumerate(objs) for item in tup]) But it's clearly not as beginner-friendly, requiring knowledge of *args and list comprehensions. OTOH, I'd claim that if you need such exacting format, you're not doing beginner stuff anyway. But YMMV. STeVe -- You can wordify anything if you just verb it. --- Bucky Katt, Get Fuzzy _______________________________________________ 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