【问题标题】:What happened to Py_FlushLine in Python 3.3?Python 3.3 中的 Py_FlushLine 发生了什么?
【发布时间】:2025-12-17 02:35:01
【问题描述】:

我正在将 python C 模块从 2.7.x 移植到 python 3.3。我遇到的一个问题是,据我所知,Py_FlushLine 没有在 python 标头中定义。

下面的代码sn-p应该如何修改才能在python 3.3中工作?

  if (Py_FlushLine()) PyErr_Clear();

更有趣的是,搜索在线 python 文档并没有显示任何关于这个 Py_FlushLine 函数的信息。

【问题讨论】:

    标签: python c api python-3.x


    【解决方案1】:

    Py_Flushline 以前是这样的:

    int
    Py_FlushLine(void)
    {
           PyObject *f = PySys_GetObject("stdout");
           if (f == NULL)
                   return 0;
           if (!PyFile_SoftSpace(f, 0))
                   return 0;
           return PyFile_WriteString("\n", f);
    }
    

    由于 Py3k 不再有软空间的概念,我猜这个决定是这个函数是多余的,应该直接将 EOL 写入标准输出。

    【讨论】: