Python缓冲区(长(-10)):“TypeError:预期的缓冲区对象”

时间:2013-11-08 14:05:53

标签: python buffer typeerror

我一直在努力探索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。似乎并非如此。

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

1 个答案:

答案 0 :(得分:2)

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

  

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

请注意,该功能实际上已弃用;它已基本上被memoryview()取代,返回memoryview type。这仍然会让您深入了解Python长整数的内部结构,因为该函数仅适用于支持缓冲协议的对象。

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

  

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

     

[...]

     

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

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