Llama a la función dos veces o más en un bucle

Yo uso el siguiente código conlambda para llamar a la función una vez en un bucle, funciona, pero ahora estoy tratando de llamar a la función para tiempos específicos como 3 veces en un bucle, lo busqué y encontré algunas soluciones, pero llaman a la función para tiempos específicos si no hay un bucle, cuando lo intento en un bucle, nada cambia. ¿Hay una manera eficiente de hacer esto?

Este funciona en un bucle e imprime solo una vez. Quiero que algo así lo haga 3 veces.

def once():
    print "Do function once"
    once.func_code = (lambda:None).func_code

once()

Este código a continuación no cambia nada y sigue imprimiéndose para siempre si está en un bucle, si no funciona.

def repeat_fun(times, f):
    for i in range(times): f()

def do():
    print 'Do function for 3 times'

repeat_fun(3, do)

También es útil agregar un contador fuera del ciclo, pero creo que debería haber una mejor solución para ello.