sage: s = "sage"; type(s) <type 'str'> sage: s = 'sage'; type(s) # you can use either single or double quotes <type 'str'> sage: s = [1,2,3,4]; type(s) <type 'list'> sage: s = (1,2,3,4); type(s) <type 'tuple'> sage: s = int(2006); type(s) <type 'int'> sage: s = float(2006); type(s) <type 'float'>
To this Sage adds many other types. E.g., vector spaces:
sage: V = VectorSpace(QQ, 1000000); V Vector space of dimension 1000000 over Rational Field sage: type(V) <class 'sage.modules.free_module.FreeModule_ambient_field'>
Only certain functions can be called on
. In other math software
systems, these would be called using the ``functional'' notation foo(V,...).
In Sage, certain functions are attached to the type (or class) of
, and are called using an object-oriented syntax like in Java or
C++, e.g.,
V.foo(...)
. This helps keep the global namespace
from being polluted with tens of thousands of functions, and means
that many different functions with different behavior can be named
foo, without having to use type-checking of arguments (or case
statements) to decide which to call. Also, if you reuse the name
of a function, that function is still available (e.g., if you
call something zeta
, then want to compute the value of the
Riemann-Zeta function at 0.5, you can still type s=.5; s.zeta()
).
sage: zeta = -1 sage: s=.5; s.zeta() -1.46035450880959
In some very common cases the usual functional notation is also supported for convenience and because mathematical expressions might look confusing using object-oriented notation. Here are some examples.
sage: n = 2; n.sqrt() sqrt(2) sage: sqrt(2) sqrt(2) sage: V = VectorSpace(QQ,2) sage: V.basis() [ (1, 0), (0, 1) ] sage: basis(V) [ (1, 0), (0, 1) ] sage: M = MatrixSpace(GF(7), 2); M Full MatrixSpace of 2 by 2 dense matrices over Finite Field of size 7 sage: A = M([1,2,3,4]); A [1 2] [3 4] sage: A.charpoly('x') x^2 + 2*x + 5 sage: charpoly(A, 'x') x^2 + 2*x + 5
To list all member functions for
, use tab completion. Just type
A.
, then type the [tab]
key on your keyboard, as
explained in Section 3.6.
See About this document... for information on suggesting changes.