[Tutor] Consolidate reused code blocks
David
david at abbottdavid.com
Thu Apr 9 04:22:02 CEST 2009
Kent Johnson wrote:
> 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
>
>
Ok, I got it now, rename load_todo to save_todo, then create the load_todo.
thanks kent
--
Powered by Gentoo GNU/Linux
http://linuxcrazy.com
More information about the Tutor
mailing list