How to assign function at each time level and use it

Respected sir

Can you please help me in defining the function at each time level and use it to solve Variational form.

Define variational problem

u = TrialFunction(V)
v = TestFunction(V)
u0 = Function(V) # u_0
u1 = Function(V) # u_1
u2 = Function(V) # u_2
u0 = my_projection(u_D, V)# u_0
u1.assign(u0) # u_1
u2.assign(u0) # u_2

###“Here I want to assign function at each time level”
for n in range(num_steps):
u(n) = Function(V) # u_n
u(n).assign(u0) # u_n

print(u(n))

B1 = (u*v + dot(a*grad(u), grad(v)) )*dx
L1 = (u0 + k1*f)*v*dx

for n in range(num_steps):
    B2 = (u*v + dot(a*grad(u), grad(v)) )*dx
    L2 = f*v*dx
    L2 += (u1-u0)*v*dx


# Time-stepping
u = Function(V)
t = 0
for n in range(num_steps-1):

    # Update current time
    t += dt
    a.t = t
    b.t = t
    c.t = t
    u_D.t = t
    f.t = t
    # Compute solution
    #solve(a == L, u, bc)
    if n <  2:
        u0.assign(u1)
        solve(B1 == L1, u, bc)
        # Update previous solution
        u1.assign(u)
    else:

****“Here I want to use the assigned function at each time level”

        u0.assign(u(n-2))
        u1.assign(u(n-1))
        solve(B2 == L2, u, bc)
        # Update previous solution
        un.assign(u)
        u0.assign(u(n-1))
        u1.assign(u(n))