# Revision history [back]

When you write

sage: k = GF(9, 'a')


The Python name k points to the field with 9 elements:

sage: k
Finite Field in a of size 3^2


But the Python name a does not point to anything:

sage: a
NameError: name 'a' is not defined


If you want to get the generator of the field, you can do:

sage: k.gen()
a
sage: k.gen()^8
1


So, if you want the Python name to point to that generator of the field, you can just do:

sage: a = k.gen()
sage: a
a
sage: a^2
a + 1

sage: x = 2*a+1
sage: x
2*a + 1
sage: x^3
a


Now, Sage has some magic to do that, you could also do:

sage: k.inject_variables()
Defining a


Also, there is something else, which is convenient for mathematicians, but violates the Python language (there is a specific Sage preparsing behind the scenes), you can do:

sage: k.<a> = GF(9)


This defines both k and a at the same time.

When you write

sage: k = GF(9, 'a')


The Python name k points to the field with 9 elements:

sage: k
Finite Field in a of size 3^2


But the Python name a does not point to anything:

sage: a
NameError: name 'a' is not defined


If you want to get the generator of the field, you can do:

sage: k.gen()
a
sage: k.gen()^8
1


So, if you want the Python name a to point to that generator of the field, you can just do:

sage: a = k.gen()
sage: a
a
sage: a^2
a + 1

sage: x = 2*a+1
sage: x
2*a + 1
sage: x^3
a


Now, Sage has some magic to do that, you could also do:

sage: k.inject_variables()
Defining a


Also, there is something else, which is convenient for mathematicians, but violates the Python language (there is a specific Sage preparsing behind the scenes), you can do:

sage: k.<a> = GF(9)


This defines both k and a at the same time.

When you write

sage: k = GF(9, 'a')


The Python name k points to the field with 9 elements:

sage: k
Finite Field in a of size 3^2


But the Python name a does not point to anything:

sage: a
NameError: name 'a' is not defined


If you want to get the generator of the field, you can do:

sage: k.gen()
a
sage: k.gen()^8
1


So, if you want the Python name a to point to that generator of the field, you can just do:

sage: a = k.gen()
sage: a
a
sage: a^2
a + 1

sage: x = 2*a+1
sage: x
2*a + 1
sage: x^3
a


Now, Sage has some magic to do that, you could also do:do (it is very convenient for objects with several generators):

sage: k.inject_variables()
Defining a


Also, there is something else, which is convenient for mathematicians, but violates the Python language (there is a specific Sage preparsing behind the scenes), you can do:

sage: k.<a> = GF(9)


This defines both k and a at the same time.