def generic_functionality(specific_function): def generic_function(foo): print '%s (generic)' % foo specific_function(foo) return generic_function @generic_functionality def specific_functionality(foo): print '%s (specific)' % foo @generic_functionality def more_specific_functionality(foo): print '%s (more specific)' % foo specific_functionality('LOL') more_specific_functionality('LOL')