Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python弱引用中的第二个数字是什么;什么是报告?_Python_Weak References - Fatal编程技术网

python弱引用中的第二个数字是什么;什么是报告?

python弱引用中的第二个数字是什么;什么是报告?,python,weak-references,Python,Weak References,我正在Windows7上运行python 2.7 在下文中,为什么表示弱引用的第二个数字与id(f)不同 导入weakref 类Foo(对象): 通过 f=Foo() w=weakref.ref(f) 打印(“id(f):%s”%(id(f),) 打印(“w:%s”%(w,)) >>> 36036400 >>>w: 因为is说弱引用是指Foo“在0225DF30”,我想这个数字应该是f的地址,在CPython中它应该与id相同。你似乎期望id(f)显示相同的数字,就像你刚刚打印出f一样。情况并

我正在Windows7上运行python 2.7

在下文中,为什么表示弱引用的第二个数字与
id(f)
不同

导入weakref
类Foo(对象):
通过
f=Foo()
w=weakref.ref(f)
打印(“id(f):%s”%(id(f),)
打印(“w:%s”%(w,))
>>> 36036400
>>>w:

因为is说弱引用是指Foo“
在0225DF30
”,我想这个数字应该是
f
的地址,在CPython中它应该与id相同。

你似乎期望
id(f)
显示相同的数字,就像你刚刚打印出
f
一样。情况并非如此,如本例所示:

>>> f
<__main__.Foo object at 0x10929df10>
>>> id(f)
4448706320
>>> w
<weakref at 0x10928cfc8; to 'Foo' at 0x10929df10>
>>> id(w)
4448636872
使用您提供给我们的数字:

>>> print 0x0225DF30
36036400

所以你可以看到这些数字实际上是一样的;只是它在一个位置以十六进制显示,在另一个位置以十进制显示。

您似乎期望
id(f)
显示相同的数字,就像您刚刚打印出
f
一样。情况并非如此,如本例所示:

>>> f
<__main__.Foo object at 0x10929df10>
>>> id(f)
4448706320
>>> w
<weakref at 0x10928cfc8; to 'Foo' at 0x10929df10>
>>> id(w)
4448636872
使用您提供给我们的数字:

>>> print 0x0225DF30
36036400

所以你可以看到这些数字实际上是一样的;只是它在一个位置以十六进制显示,在另一个位置以十进制显示。

整数36036400与十六进制0x225df30相同:

In [10]: hex(36036400)
Out[10]: '0x225df30'

In [11]: 36036400 == 0x225df30
Out[11]: True
您可以使用
%x
查看
id(f)
的十六进制表示形式:


整数36036400与十六进制0x225df30相同:

In [10]: hex(36036400)
Out[10]: '0x225df30'

In [11]: 36036400 == 0x225df30
Out[11]: True
您可以使用
%x
查看
id(f)
的十六进制表示形式:


hex(36036400)
=
'0x225df30'
。又是什么问题?没必要大惊小怪:)
hex(36036400)
=
'0x225df30'
。问题又是什么?不必尖声嚷嚷:)
id(w)
与weakref
w
指向的内容无关。如果在提到十六进制与十进制表示法的部分,使用与示例中相同的数字,这个答案会更清楚。@DanielSank说得好。我使用的是OPs数字,所以我明确了这一点,并添加了我的示例中的数字。
id(w)
与weakref
w
指向的内容无关。如果在您提到十六进制与十进制表示的部分中,您使用与示例中相同的数字,这个答案会更清楚。@DanielSank说得好。我使用的是OPs编号,所以我明确了这一点,并添加了我示例中的编号。