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 (either through type inference, or from an explicit specification by the user). This means that arithmetic operations can wrapround or produce undefined results or overflow.
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.