variable assignment in "while" loop
Evan Simpson
evan at 4-am.com
Tue Jul 29 12:51:17 EDT 2003
Sybren Stuvel wrote:
> while info = mydbcursor.fetchone():
> print "Information: "+str(info)
Gustavo has already pointed out the classic Pythonic ways of writing
this. In the general case, where you don't have an iterator handed to
you, you can make one as of Python 2.2 like so:
def each(f):
'''Make a zero-argument function or method iterable.
It had better have side effects, or this is pointless.'''
v = f()
while v:
yield v
v = f()
for info in each(mydbcursor.fetchone):
print "Information:", info
Of course, all this really does is to factor out one of the classic
Pythonic patterns into a wrapper function.
There's also the Pita pocket solution:
class Pita(object):
__slots__ = ('pocket',)
marker = object()
def __init__(self, v=marker):
if v is not self.marker:
self.pocket = v
def __call__(self, v=marker):
if v is not self.marker:
self.pocket = v
return self.pocket
p = Pita(10)
while p(p() - 1):
print p()
Cheers,
Evan @ 4-am
More information about the Python-list
mailing list