如何在Python中检查指针是否为空?

9
我需要通过回调函数处理指针并获取其值。这很棘手,因为在第一次调用时,该指针为空。因此,执行pointer.contents会出现ValueError: NULL pointer access的错误。为了避免这种情况,如何检查指针是否为空?

你可以捕获 ValueError,没有代码或上下文很难给出更多建议。 - Tim Wakeham
不需要发布代码,我认为你已经正确回答了问题 :) 谢谢 - Bogey Jammer
2个回答

17

空指针具有布尔值为假的特性,因此:

if pointer:
    x = pointer.contents
else:
    print "NULL pointer"

排版已经修订


我没有注意到文档中的内容... - Bogey Jammer

-2

实际上,指针并不是 None,它不是一个常见的 Python 变量类型。当指向的值不存在时,指针被称为 null。 - Bogey Jammer
2
@BogeyJammer,除了Python没有类型变量。它有绑定到对象的名称,就像标签一样。因此,只需说指针和None是不同的类型即可。请注意,ctypes通常会将None参数转换为NULL指针,并且简单的指针类型(即c_void_pc_char_pc_wchar_p)在用作函数restype或结构体或联合体中的字段时将NULL转换为None - Eryk Sun
然而,并非所有情况都适用。如果您指定了一个 ctype 函数 restype,它是一个指针,并且该函数返回 NULL,则 ctypes 不会将其转换为 None(因为指针变量在您的作用域内,只是它恰好指向 NULL)- 您将得到一个 ctypes 指针对象,因此 x is None 总是为 False。 - KingRadical

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接