Does the solve() function automatically turn the trial function 'u' into a vector?

My question is regarding the trial function (solution) that is ‘u’ in most of the tutorials seen in the documentation. When we write solve(a,L,u), does the program automatically convert the u into a vector even if not explicitly stated?

If you solve a linear problem, you use a TrialFunction to define your bi-linear form a(u, v).
When solving, you need to explicitly send in a function uh (confusingly many people use u=Function(V) instead of uh= Function(V) to denote the approximate solution we are getting.
I.e. I would recommend using

u = TrialFunction(V)
v = TestFunction(V)
a = .....

uh = Function(V)
solve(a==L, uh)