Steven D'Aprano wrote: > lina wrote: > >> one example: >> >> def info(object, spacing=10, collapse=1): >> """Print methods and docs strings. >> >> Take modules, class, list, dictionary, or strong.""" >> methodList = [e for e in dir(object) if callable(getattr(object, e))] >> processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda >> s: s) print "\n".join(["%s %s" % >> (method.ljust(spacing), >> processFunc(str(getattr(object, method).__doc__))) >> for method in methodList]) > > > In this example, "collapse" is used as the name of an argument which > takes a true/false flag. If collapse is true, runs of whitespace is > collapsed into a single space: > > "hello world" => "hello world" > > The above function would be much easier to understand if it was written > like this: > > def info(object, spacing=10, collapse=1): > """Print methods and docs strings. > > Take modules, class, list, dictionary, or string. > """ > method_names = [] > doc_strings = [] > for name in dir(object): > attribute = getattr(object, name) > if callable(attribute): > method_names.append(name.ljust(spacing)) > doc_strings.append(str(attribute.__doc__)) > if collapse: > doc_strings = [" ".join(doc.split()) for doc in doc_strings] > parts = ["%s %s" % (n, d) for n,d in zip(method_names, doc_strings)] > print "\n".join(parts) > > > > Much longer, but easier to follow for a beginner.
Or even def info(object, spacing=10, collapse=True): for name in dir(object): attribute = getattr(object, name) if callable(attribute): doc = str(attribute.__doc__) if collapse: doc = " ".join(doc.split()) print name.ljust(spacing), doc _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor