Definition[symbol]Definition does not print information for ReadProtected symbols.Definition uses InputForm to format values.
a = 2;
Definition[a]
f[x_] := x ^ 2
g[f] ^:= 2
Definition[f]
Definition of a rather evolved (though meaningless) symbol:
Attributes[r] := {Orderless}
Format[r[args___]] := Infix[{args}, "#"]
N[r] := 3.5
Default[r, 1] := 2
r::msg := "My message"
Options[r] := {Opt -> 3}
r[arg_., OptionsPattern[r]] := {arg, OptionValue[Opt]}
Some usage:
r[z, x, y]
N[r]
r[]
r[5, Opt->7]
Its definition:
Definition[r]
For ReadProtected symbols, Definition just prints attributes, default values and options:
SetAttributes[r, ReadProtected]
Definition[r]
This is the same for built-in symbols:
Definition[Plus]
Definition[Level]
ReadProtected can be removed, unless the symbol is locked:
ClearAttributes[r, ReadProtected]
Clear clears values:
Clear[r]
Definition[r]
ClearAll clears everything:
ClearAll[r]
Definition[r]
If a symbol is not defined at all, Null is printed:
Definition[x]