2.8. Deviations from Python semantics

2.8.1. Integer width

While Python has arbitrary-sized integers, integers in Numba-compiled functions get a fixed size through type inference (usually, the size of a machine integer). This means that arithmetic operations can wrapround or produce undefined results or overflow.

Type inference can be overriden by an explicit type specification, if fine-grained control of integer width is desired.

2.8.2. Boolean inversion

Calling the bitwise complement operator (the ~ operator) on a Python boolean returns an integer, while the same operator on a Numpy boolean returns another boolean:

>>> ~True
-2
>>> ~np.bool_(True)
False

Numba follows the Numpy semantics.

2.8.3. Global and closure variables

In nopython mode, global and closure variables are frozen by Numba: a Numba-compiled function sees the value of those variables at the time the function was compiled. Also, it is not possible to change their values from the function.

To modify a global variable within a function, you can pass it as an argument and modify it in place without the need to explicitly return it.

Todo

This document needs completing.