我有一个网址:
https://enterpriseefiling.fcc.gov/dataentry/api/download/dbfile/Current_LMS_Dump.zip
让
^{pr2}$我在python解释器中运行以下代码
import requests, io
r = requests.get(u1, stream=True)
io.BytesIO(r.content)
我得到以下回应
<_io.BytesIO object at 0x000002244592F1A8>
我的问题是:这是什么意思?0x0000022445921a8在哪里?0x000002244592F1A8是什么意思?在
我的理解是} 。我说“格式化”是因为,如果在同一个对象上执行
0x000002244592F1A8
这是内存中对象的格式化的^{id()
,那么表示将有点不同(它将被格式化为int
或long
而不是指针地址:要将
^{pr2}$id()
转换为您看到的格式,可以执行如下操作(从this post中窃取):这个^^不是特别有用,但它只是向您展示了
id()
如何与您所看到的一致。在您看到它的原因只是它显示为
BytesIO
对象的默认__repr__()
的一部分。在当python需要打印一个对象,而该对象没有一个内置方法来告诉解释器如何打印它(例如,}类型do有这种类型的指令),python使用以下格式:
requests.Response
和python的内置list
和{其中
pointer
实际上是指向对象在内存中位置的指针。这就是您在这里看到的:当您在解释器中执行io.BytesIO(r.content)
操作时,您将创建一个io.BytesIO
对象。在在解释器上,当您使用解释器时,往往会调用另一个方法
^{pr2}$而不仅仅是
而且
io.BytesIO
类当然有一些方法可以用于更有用的输出,如果您查看它的文档的话。尝试将其分配给变量而不是打印:它指的是对象的身份。这个数字是一个实现细节(在CPython中,它恰好是内存中对象的地址,
id
内置函数返回的数字相同),但是您可以相信的是,对于进程中当前存在的每个BytesIO
对象,这个数字都是不同的。在这类信息包含在许多对象的
__repr__
中,因为它在调试时非常有用,允许用户区分可能具有相同内容的不同对象。在相关问题 更多 >
编程相关推荐