【问题标题】:How Python's interpreter prints text ? - The source codePython 的解释器如何打印文本? - 源代码
【发布时间】:2014-08-07 01:59:25
【问题描述】:

这里的任何 Python 极客都知道 Python 的解释器如何准确地打印输出。我需要确切的源文件。到目前为止,我发现如果 Python 的解释器正在打印任何它调用“PyEval_CallObject”的东西,或者我错了。关于这个的任何指示?我想确切地了解 Python 如何解释打印语句,即写入标准输出。如果你能指出 Python 的解释器是如何写入文件的,那就太好了。谢谢你的帮助。

【问题讨论】:

    标签: python c interpreter pyc


    【解决方案1】:

    我并不是真正的 Python 极客,但通过 grep 源代码库并找到这些东西的实现位置并不难。

    看起来有几个 Python 操作码与 print 语句相关联,以及 they're all clustered together in ceval.c

    他们似乎都委托给PyFile_* 系列函数来写信给stdout。如果您查看PyFile_WriteString,您会发现它只是调用fputs

    您可能还会发现 code for the built-in print function 很有帮助(即 __builtin__.print,从 Python 3 向后移植)。

    【讨论】:

    • 太棒了。文件写入很容易 fputs。所以我仍在挖掘寻找标准输出打印的方法。会不会只是一个普通的 printf 语句?
    • @ShankarMJ - 也是fputs。他们只是将stdout 文件句柄传递给fputs。有点像调用printf(...)fprintf(stdout, ...) 基本相同。
    • 你先生得到我的选票:) 谢谢。很抱歉提出更多问题,但您对此有任何想法吗? stackoverflow.com/questions/25129311/…
    • 有趣。我想知道 Python(或类似的)在处理带有空字节的打印字符串方面做了什么,但看起来答案是“什么都没有”。
    • @jbm - 几年前,我尝试使用� 或类似的东西在HTML 文档的<title> 中嵌入一个空字节。当时当前版本的火狐在空字符处截断了标题!您可能会惊讶于 C-string 行为泄漏的地方有多少......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    相关资源
    最近更新 更多