gpt4 book ai didi

python - Cython:C 级 int 与 PyLongObjects

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:57 26 4
gpt4 key购买 nike

我正在读 Kurt W. Smith 写的书“Cython”。我对这本书感到困惑。

在第 42 页,作者说道:

In cases where Python built-in types like int or float have the same name as a C type, the C type takes precedence. This is almost always what we want.

然而在第 44 页,作者说道:

Python also has a PyLongObject at the C level to represent arbitrarilysized integers. In Python 2, these are exposed as the long type, andif an operation with PyIntObject overflows, a PyLongObject results.

In Python 3, at the C level, all integers are PyLongObjects.

我的问题是我是否在 Python 3 中声明了一个变量

cdef int a;

a 是 C 级 int(因为 C 类型优先)还是 PyLongObject

如果是C级int,如何解释第二部分?

最佳答案

cdef int a 在 Python 2 和 3 中声明 C 级整数; C 类型优先。

作者似乎想说的是,pure Python 3 中的 int 始终表示 PyLongObject 类型。 Python intlong 数值类型现在没有区别。

Python 2 有 long type 表示 PyLongObject 类型,但这在 Python 3 中已被删除,Python 3 只有 int 来引用 PyLongObject 类型。因此,当您在 Python 3 中使用 Cython 时编写 cdef long a 时,不会与内置类型发生潜在冲突。

关于python - Cython:C 级 int 与 PyLongObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36622427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com