exctac: они не формируются, они заранее определены либо в дженерик вью либо самим программистом(тобой), handler не равно строке get, метод dispatch получает из запроса http метод(GET, POST, HEAD etc.) и встроенной функцией getattr() пытается получить объект заранее определенного в написанном тобой вью метода для обработки полученного http метода(get(), post(), head(), etc.), и если все удачно то записывает его в handler, и потом просто вызывает с аргументами (request, *args, **kwargs), если полученный метод не определен во вьюхе то в handler записывается метод http_method_not_allowed
exctac: в твоём коде, если бы было понятно то не спрашивал бы :) реализация методов для обработки http запросов ( get/post/head/ etc. ) лежит на тебе, если твоя вьюха напрямую наследуется от View
Где сама задача? Зачем в функции subj.endswith('!') если на нее в итоге нет проверок? Это ли нужно было сделать вообще? Если пованговать, то скорее всего второе условие должно находить восклицание на конце(exclamation), а не восклицательный знак(exclamation mark)
sanya84: в цикле функция создаётся 4 раза, новый поток создаётся 4 раза и запускается 4 раза. Если тебе убрать оттуда всю эту муть в две строчки с потоками и просто вместо них написать f(i) - получишь тот же самый результат, но уже просто 4 раза пересоздав функцию.
Советую скачать Лутца "Программируем на Python" последнее издание, открыть оглавление и перейти на модуль threading, он там почти в самом начале будет, читать не много, но хоть понятно будет как вообще с эти модулем можно и нужно работать