- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在读 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 int
和 long
数值类型现在没有区别。
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/
我正在使用 C 扩展 API 编写一个 Python 模块,并尝试将一个长变量从 Python 传递到 C 函数中,然后从中获取用于表示该变量的原始 PyLongObject。 我正在使用 PyArg
我正在读 Kurt W. Smith 写的书“Cython”。我对这本书感到困惑。 在第 42 页,作者说道: In cases where Python built-in types like in
我是一名优秀的程序员,十分优秀!