Hi,
The syntax S.<x>=...
, which is not standard Python, is actually interpreted by the Sage preparser. You can find how it is transformed to standard Python by means of the preparse
command, with "S.<x>=..."
as an argument (don't forget the quotes):
preparse("S.<x> = NumberField(x^2-5)")
The output is
"S = NumberField(x**Integer(2)-Integer(5), names=('x',)); (x,) = S._first_ngens(1)"
As you can see, it is a short-cut ("syntactic sugar") for combining two definitions into a single instruction: the definition of S and that of x, as a generator of S.
This is documented in Sage reference manual: look for sage.repl.preparse.preparse_generators
in this page