Alex Bryan wrote:
Okay, so i don't really understand the Yield thing and i know it is useful. I've read a few things about it but it is all programming jargon and so basically it is hard for me to understand. So can anyone give me a description or link me to a site that has a good definition and/or examples of it? If you could I would really appreciate it.
Use yield when you want the function to act as a generator. That is each time it is called it generates a response and returns it, but leaves its state intact so that the next time you call it, it can pick up where it left off and continue on.
Best example I ever saw is the code that implements os.walk() function: def walk(top, topdown=True, onerror=None): """ Example: from os.path import join, getsize for root, dirs, files in walk('python/Lib/email'): print root, "consumes", print sum([getsize(join(root, name)) for name in files]), print "bytes in", len(files), "non-directory files" if 'CVS' in dirs: dirs.remove('CVS') # don't visit CVS directories """ from os.path import join, isdir, islink try: names = listdir(top) except error, err: if onerror is not None: onerror(err) return dirs, nondirs = [], [] for name in names: if isdir(join(top, name)): dirs.append(name) else: nondirs.append(name) if topdown: yield top, dirs, nondirs for name in dirs: path = join(top, name) if not islink(path): for x in walk(path, topdown, onerror): yield x if not topdown: yield top, dirs, nondirs Actually this code uses yield and is recursive. Pretty neat. -Larry -- http://mail.python.org/mailman/listinfo/python-list