def fak(n):
  return reduce(operator.mul, range(1, n+1), 1)

Ganz richtig ist das natürlich nicht – eine robuste Implementierung sollte wohl alles, was nicht natürliche Zahl ist, zurückweisen. Diese Fassung gibt als Fakultät von -1 auch 1 zurück, was sozusagen in jeder Hinsicht falsch ist (will heißen: Die Fakultät ist für -1 gar nicht definiert, es ist also schon schlecht, überhaupt etwas zurückzugeben. Aber selbst wenn man die Fakultät so erweitert, dass sie für mehr als nur für natürliche Zahlen geht – das ist die Gamma-Funktion –, ist ihr Wert bei -1 nicht 1, sondern, na ja, richtig viel: Die Gamma-Funktion hat bei -1 einen Pol).