💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 2.8。与 Python 语义的偏差 > 原文: [http://numba.pydata.org/numba-doc/latest/reference/pysemantics.html](http://numba.pydata.org/numba-doc/latest/reference/pysemantics.html) ## 2.8.1。异常和内存分配 由于当前编译器在处理异常时的限制,在引发异常的函数中分配的内存(几乎总是 NumPy 数组)将**泄漏**。这是一个已修复的已知问题,但与此同时,最好在函数之外进行内存分配,这也可能引发异常。 ## 2.8.2。整数宽度 虽然 Python 具有任意大小的整数,但 Numba 编译函数中的整数通过[类型推断](../glossary.html#term-type-inference)(通常是机器整数的大小)获得固定大小。这意味着算术运算可以包围或产生未定义的结果或溢出。 可以通过显式类型规范覆盖类型推断,期望对整数宽度进行细粒度控制。 也可以看看 [增强建议 1:整数输入的变化](../proposals/integer-typing.html#nbep-1) ## 2.8.3。布尔反转 在 Python boolean 上调用按位补码运算符(`~`运算符)返回一个整数,而 Numpy 布尔值上的相同运算符返回另一个布尔值: ```py >>> ~True -2 >>> ~np.bool_(True) False ``` Numba 遵循 Numpy 语义。 ## 2.8.4。全局和闭包变量 在 [nopython 模式](../glossary.html#term-nopython-mode)中,Numba 的全局和闭包变量是 _ 冻结 _:Numba 编译的函数在编译函数时看到这些变量的值。此外,无法从功能更改其值。 Numba **可能会或可能不会**复制已编译函数内引用的全局变量。通过不变性假设复制小的全局数组以进行潜在的编译器优化。但是,不会复制大型全局数组以节省内存。 “小”和“大”的定义可能会改变。 去做 该文件需要完成。