gpt4 book ai didi

python - Ironpython:函数在 CPython 中工作,IronPython 中神秘的空指针异常

转载 作者:太空狗 更新时间:2023-10-30 03:06:57 24 4
gpt4 key购买 nike

我正在尝试做一些看起来很简单,并且在标准 python 范围内的事情。以下函数采用一组集合,并返回包含在两个或多个集合中的所有项目。

为此,虽然集合的集合不为空,但它只是从集合中弹出一个集合,将其与其余集合相交,并更新落在其中一个交点中的一组项目。

def cross_intersections(sets):
in_two = set()
sets_copy = copy(sets)
while sets_copy:
comp = sets_copy.pop()
for each in sets_copy:
new = comp & each
print new, # Print statements to show that these references exist
print in_two
in_two |= new #This is where the error occurs in IronPython
return in_two

以上是我正在使用的功能。要对其进行测试,请在 CPython 中执行以下操作:

>>> a = set([1,2,3,4])
>>> b = set([3,4,5,6])
>>> c = set([2,4,6,8])

>>> cross = cross_intersections([a,b,c])
set([2, 4]) set([])
set([4, 6]) set([2, 4])
set([3, 4]) set([2, 4, 6])
>>> cross
set([2, 3, 4, 6])

但是,当我尝试使用 IronPython 时:

>>> b = cross_intersections([a,b,c])
set([2, 4]) set([])
set([4, 6]) set([2, 4])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:/path/to/code.py", line 10, in cross_intersections
SystemError: Object reference not set to an instance of an object.

在标题中我说这是一个神秘的空指针异常。我可能不知道 .NET 如何处理空指针(我从来没有使用过类似 C 的语言,并且只使用 IronPython 一个月左右),但如果我的理解是正确的,它发生在你试图访问指向 null 的对象的某些属性。

在这种情况下,错误发生在我函数的第 10 行:in_two |= new。但是,我在这一行之前放置了 print 语句(至少对我而言)表明这些对象都不指向 null

我哪里错了?

最佳答案

It's a bug .它将在 2.7.1 中得到修复,但我认为该修复不会出现在 2.7.1 Beta 1 版本中。

关于python - Ironpython:函数在 CPython 中工作,IronPython 中神秘的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com