#!/usr/local/bin/python2 def join(funcs, main=0): def f(*args, **kwargs): for index, func in enumerate(funcs): if index == main: result = func(*args, **kwargs) else: func(*args, **kwargs) return result return f func = join((int, str, bool)) for i in xrange(100000): r = func(5) print r