You could do this, but you probably shouldn’t:
def forn(n): def new_func(func): for i in range(n): func(i) return func return new_func @forn(10) def f(i): print(i)
def forn(n, func) return [func(i) for i in range(n)] x = forn(10, lambda x: x**2)
But these are more verbose and less readable than
for i in range(10): print(i)
x = [i**2 for i in range(10)]
As others have said, you’ll do best to just use the built-in tools.