In LAMMPS, variables are evaluated by other commands.
Some of those commands (like velocity or print) evaluate them one
time and use the result to do a single thing (like set the velocity
of an atom or print out the variable).
Other commands evaluated the variable many times during
the course of a run and use the results. Fixes (the ones that
take variables as inputs) do that, as the fix is invoked many
times during a run, e.g. every timestep.