gpt4 book ai didi

python - 如何在 Python3 中获取 PyObject 的字符串表示形式?

转载 作者:太空狗 更新时间:2023-10-30 00:07:24 32 4
gpt4 key购买 nike

我正在调试 Python 源代码 (CPython 3.4)。我收到一个 PyObject*。我想 printf 它。

例如(来自Python 3.4源码的Objects/floatobject.c):

PyObject *o_ndigits = NULL;
Py_ssize_t ndigits;

x = PyFloat_AsDouble(v);
if (!PyArg_ParseTuple(args, "|O", &o_ndigits))
return NULL;

如何printf o_ndigits?这几乎与这个问题相同:Python: get string representation of PyObject? ,但对于 Python3。使用原始解决方案,我得到了 "undefined reference to PyString_AsString" 错误。

最佳答案

PyObject_ReprPyObject_ASCII 都返回对象的 unicode str 表示。如果您的终端不使用 UTF-8,您可能需要 ASCII 转义表示。使用 PyUnicode_AsUTF8PyUnicode_AsUTF8AndSize 获取多字节字符串. 3.3 中的新实现缓存了 UTF-8 字节字符串,所以不要在打印后释放它。

至于 PyString_AsString,对于 3.x bytes 类型,它变成了 PyBytes_AsStringPyBytes_AS_STRING

关于python - 如何在 Python3 中获取 PyObject 的字符串表示形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20465166/

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