On November 15, 2009 10:54:16 pm William Stein wrote: > On Sun, Nov 15, 2009 at 10:23 PM, kstueve <kevin.stu...@gmail.com> wrote: > > An alternative to adding/removing/commenting out/uncommenting print > > statements through your code may be to use decorators. A decorator is > > a a function that is passed your function whenever it is called. A > > decorator can do whatever you want. Some of the possibilities are > > caching values of the function, but a decorator might be used to print > > debugging statements or keep track of how many times a method is > > called (or even pause or wait for input). Some IDEs might have step > > through and breakpoint capability. If my memory serves me correctly, > > there is a command (I think it works only in the command line, not in > > the notebook) that will give timing and method invocations for code. > > > > @somedecorator > > def somefunction(): > > code > > > > When somefunction is called, somedecorator (which is actually another > > callable function somewhere) gets called. > > That is not correct. Doing > > @somedecorator > def somefunction(): > code > > is equivalent to doing > > somedecorator > def somefunction(): > code > somefunction = somedecorator(somefunction) > > The callable somedecorator is called when somefunction is created, not > when somefunction is called. > > William > > >
Thank you all for the suggestions and links. Would it be possible to add them as a subsection to 'Coding in Python for Sage' (at http://sagemath.org/doc/developer/)? Perhaps 'Basic debugging techniques.' - Jim --~--~---------~--~----~------------~-------~--~----~ To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---