From: Vedran on 9 Aug 2010 07:12 Hello! Is it possible to apply a decorator on a block of code, without defining a function that decorator is applied to. I have to generate a lot of similar graphs. For that reason I use plot_decorator to perform usual figure setup(outfile, legend, x_label, y_label and so on), and pylab.plot commands to do the actual plotting. Current solution: @plot_decorator(fig_params1) def plt(): pylab.plot(..first graph data...) pylab.plot(..second graph data..) plt() Is it possible to apply decorator only to the body of plt (several pylab.plot commands) without actually defining this function, because I use it only once, right after the definition?
From: Peter Otten on 9 Aug 2010 07:37 Vedran wrote: > Hello! > > Is it possible to apply a decorator on a block of code, without defining > a function that decorator is applied to. You can only decorate functions or classes. > I have to generate a lot of similar graphs. For that reason I use > plot_decorator to perform usual figure setup(outfile, legend, x_label, > y_label and so on), and pylab.plot commands to do the actual plotting. > > Current solution: > > @plot_decorator(fig_params1) > def plt(): > pylab.plot(..first graph data...) > pylab.plot(..second graph data..) > plt() > > Is it possible to apply decorator only to the body of plt (several > pylab.plot commands) without actually defining this function, because I > use it only once, right after the definition? I have a hunch that a contextmanager is a better match for your requirements, see http://docs.python.org/library/contextlib.html#contextlib.contextmanager Peter
From: Gregory Ewing on 9 Aug 2010 20:48 Vedran wrote: > @plot_decorator(fig_params1) > def plt(): > pylab.plot(..first graph data...) > pylab.plot(..second graph data..) > plt() You could do something like def call(f): f() @call @plot_decorator(fig_params1) def plt(): pylab.plot(..first graph data...) pylab.plot(..second graph data..) -- Greg
|
Pages: 1 Prev: Create child class of Python dict with modified values Next: GUI automation tool (windows) |