方法需要“double*”类型的参数?

2024-06-26 12:50:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,我正在尝试使用python包装器为epanet编写一些代码,我相信这是SWIG包装的。我需要使用一种方法,如下文中所述。然而,我似乎无法让方法接受第三个参数“values:”,的任何类型的值。。我尝试的任何操作都会得到错误:TypeError:在方法“ptrn_set”中,类型为“double*”的参数3

如何在Python中将值/值转换为“double*”?解决办法是什么?在

感谢你的帮助。。。在

    """
    ptrn_set(ph, index, values, len) -> int

    Parameters
    ----------
    ph: Handle
    index: int
    values: double *
    len: int

    """
    return _toolkit.ptrn_set(ph, index, values, len)

Tags: 方法代码类型参数indexlenphswig
2条回答

我在这里发现的: https://docs.python.org/2.4/lib/typesnumeric.html 浮点数是在C中使用double实现的

你试过漂浮吗?在

Python本身不支持double *类型的值。在C语言中,它是指向双精度浮点数字的指针。在Python中,实际上每个名称都是一个指针,但不能有一个(本机)值作为指针。在

从上下文来看,他们实际上想要一个双精度数组。他们真的应该写为double [],但是{}与它兼容。你可以试试

values = [1.0, 2.0]
_toolkit.ptrn_set(ph, index, values, len(values))

如果这很管用,那就去做吧。如果不起作用,请查看expanetpython包装器是否提供了一种构造此类值的方法。在

如果Python不能提供这样一个表达式库,那么就不要尝试使用这种方法来构建cffi。我想x = ffi.new("double[10]")会给你一个10个双精度数组。在

相关问题 更多 >