I assert it's easier to write: start_new_thread( this_func ) def thrA(): normal_suite()
than def thrA(): normal_suite() start_new_thread( thrA ) If you don't, stop reading. If you do, accomplish it like this: @decwrap( start_new_thread, Link, ( 2, 3 ) ) def anonfunc( a, b ): print( a, b ) where 'Link' replaces the following func, plus in keywords too: @decwrap( Thread, None, target= Link, args= ( 2, 3 ) ) def sampleth( a, b ): print( a, b ) sampleth.start() sampleth.join() 'Link' is a pseudo-constant. Link= object() @decwrap follows. def decwrap( func, *ar, **kwar ): def predec( func2 ): ar2= list( ar ) while Link in ar2: ar2[ ar2.index( Link ) ]= func2 kwar2= kwar.copy() for k, v in kwar2.items(): if v is not Link: continue kwar2[ k ]= func2 ret= func( *ar2, **kwar2 ) return ret return predec Further applications: @decwrap( button.bind, "<Key-X>", Link ) def anonfunc(): print( 'Key X pressed' ) Optional stylism for readability: @decwrap( start_new_thread, ~Link, ( 2, 3 ) ) @decwrap( Thread, None, target= ~Link, args= ( 2, 3 ) ) @decwrap( button.bind, "<Key-X>", ~Link ) where 'Link' is: class NegMarking: def __invert__( self ): return self Link= NegMarking() -- http://mail.python.org/mailman/listinfo/python-list