[Tutor] Consolidate reused code blocks
Kent Johnson
kent37 at tds.net
Thu Apr 9 04:04:04 CEST 2009
On Wed, Apr 8, 2009 at 8:38 PM, David <david at abbottdavid.com> wrote:
> Hi Everyone,
>
> I have a simple todo list program with functions to add, delete, edit and
> print out a list of todo's. I need to understand how to remove the same
> blocks of code I use in each function. Should I create a class for the same
> block of code I am including in each function?
No, you can make functions to contain common code. You are sort of on
the right track with your load_todo() function, though it should
really be called save_todo().
> Here are two of the
> functions;
>
> def main():
> print '\nYour current Todo list is: \n'
> if os.path.exists('todo.dat'):
> try:
> fname = open('todo.dat', 'rb')
> data = cPickle.Unpickler(fname)
> todo = data.load()
> load_todo(todo)
Not sure why you call load_todo() here, it writes back to the file you
just read.
You could have a real load_todo() that looks like this:
def load_todo():
if (os.path.exists('todo.dat')):
with open('todo.dat', 'rb') as fname: # with statement is simpler
than try/finally
data = cPickle.Unpickler(fname)
todo = data.load()
else:
todo = {}
return todo
Then your main() could look like this:
def main():
print '\nYour current Todo list is: \n'
todo = load_todo()
if todo:
for k, v in todo.iteritems():
print k, v[0], v[1]
else:
print "You have 0 todo's"
menu()
Kent
More information about the Tutor
mailing list