[Tutor] breakfast of champions [pydoc/overcommenting?/functions]
Danny Yoo
dyoo@hkn.eecs.berkeley.edu
Wed, 12 Dec 2001 00:32:46 -0800 (PST)
On Wed, 12 Dec 2001, Kirk Bailey wrote:
> cold pizzia.
Don't stay up too late. *grin* I'm jealous; I have to wake up earlier
tomorrow. Eat some veggies too.
> digest them rfc822 headers still. Coming along. Found the definition for
> find int he on line documenting. Makes sense really, although I would
> have thought there would be a search method alredy in the language, but
> hey, it works.
There is something of a search method in the 'pydoc' module. After
importing the pydoc module, try typing:
###
pydoc.help('string')
###
from an interpreter, and you should see a bunch of help.
In fact, strings already have a find() function:
###
>>> pydoc.help('string.find')
Help on function find in string:
find(s, *args)
find(s, sub [,start [,end]]) -> in
Return the lowest index in s where substring sub is found,
such that sub is contained within s[start,end]. Optional
arguments start and end are interpreted as in slice notation.
Return -1 on failure.
###
so you can just use it: you don't have to define it again.
> Also must add a loop to read the subscriber file and STRIP OFF the \n
> on the end of each line, and append it to the list before searching
> it, as it kills the search. Pity I cannot think of way to do that on
> the fly while loading with readlines. Any suggestions?
You'll like this one: you can use a string.replace() to remove '\n's from
a string that you're reading. For example:
###
>>> s = 'this is a string\n\nwith newlines\n'
>>> import string
>>> string.replace(s, '\n', '')
'this is a stringwith newlines'
###
It's my personal opinion that your code has way too many comments.
*grin* I think that things like:
> localhost = 'howlermonkey.net' # make sure you set this to the domain
# YOU use!!!
are fine, but that:
> listname = sys.argv[1] # we read a command line arguement to
# determine the list name
# Arguement 0 is the name of
# the script run, 1 is the
# first arguement.
# after that name in the command line,
# so if this were program FOO,
# that line would be "|/path/FOO listname"
# and the arguement here would be 'listname'!
and examples like that are overkill. These are just an opinion though, so
don't take me too seriously on this.
You have a large portion of code that begins here:
> subject = '[' + listname + ']' + subject # then acept the submission.
> Reply_to = listname + "@" + localhost # this sets the reply-to field.
[... code cut]
that may be a prime candidate for a function --- it could be something
that constructsMessage() or something to that effect.