thanks
yes there is, the := notation reevaluates the right-hand-side each time it is evaluated. So there is a difference between these two definitions:
:=
ClearAll[p,f] p=2; f[x_]:=x+p; p=3; f[2] ClearAll[p,f] p=2; f[x_]=x+p; p=3; f[2]