Я подвергаю сомнению время. Эти две функции не повторяются сами по себе. fact1 и fact2 оба вызывают fact , который не отображается.
Как только это исправлено, дизассемблирование (как в Py2.6, так и в Py2.7) показывает, что оба работают с одинаковыми кодами операций, за исключением имени вернувшейся в функцию. Выбор имени вызывает небольшую разницу во времени, потому что fact1 может вставляться в словарь модуля без коллизий имен, в то время как * fact2) может иметь значение хеша, которое вступает в конфликт с другим именем в модуле.
Другими словами, любые различия, которые вы видите во времени, не связаны с выбором того, присутствует ли условие else: -)