1

我一直在尝试探索 python 如何在我的系统上长期存储符号。

不确定这是不是这样,我试过buffer(long(-10))希望它能让我更接近。

但我有TypeError: buffer object expected

来自help(buffer)

class buffer(object)
 |  buffer(object [, offset[, size]])
 |
 |  Create a new buffer object which references the given object.
 |  The buffer will reference a slice of the target object from the
 |  start of the object (or at the specified offset). The slice will
 |  extend to the end of the target object (or with the specified size).

我认为一切都是 python 中的对象,我解释了这个文档字符串,以便我可以将任何对象提供给缓冲区的 init。似乎并非如此。

你能帮我理解发生了什么吗?

4

1 回答 1

2

buffer()函数 适用于支持缓冲区协议的对象:

object参数必须是支持缓冲区调用接口的对象(例如字符串、数组和缓冲区)。

请注意,该功能实际上已被弃用;它在很大程度上被替换为memoryview(),返回一个 memoryview类型。然而,这仍然不会让您深入了解 Python 长整数的内部结构,因为该函数仅适用于仍然支持缓冲区协议的对象。

Python 3 文档在C API 文档中包含有关缓冲区协议的更多信息:

Python 中可用的某些对象封装了对底层内存数组或缓冲区的访问。

[...]

虽然这些类型中的每一种都有自己的语义,但它们都有一个共同的特征,即由可能很大的内存缓冲区支持。然后,在某些情况下,希望直接访问该缓冲区而无需中间复制。

因此,这些函数旨在使访问更大的数据块更有效,而不是让您深入了解底层 C 结构。

于 2013-11-08T14:08:24.483 回答