python 解释器如何接收和输出数据?

How the python interpreter receives and outputs data?

提问人:handler404 提问时间:7/22/2023 更新时间:7/22/2023 访问量:80

问:

当我写作时会发生什么? 解释器是直接使用系统 I/O 手段,还是使用某种系统 API,它提供了需要在控制台中显示某些内容的信息?print('Something')

输入也是如此。如果我调用该函数,那么 python 解释器本身将读取输入值,或者它会再次将这项工作委托给某个系统 API,它将包装输入。input()

我知道python是用C语言编写的(至少是它的主要实现)。原来是解释器内部的C语言负责输入/输出?

我所有寻找答案的尝试都归结为文章,他们告诉我,您需要按下键盘上的按钮,该功能将在控制台中打印一些东西。我已经知道这一点,我想知道下面这个级别发生了什么。input()print()

python c io stdout stdin

评论

0赞 Some programmer dude 7/22/2023
Python 是开源的,因此源代码可供查看。不过,对于初学者来说,这可能有点不知所措,尤其是不太了解 C 的人。所以请告诉我们,你为什么想知道这个?您是否有您认为这些知识可以解决的潜在问题?然后直接询问。还是只是单纯的好奇心?好奇心没有错,但请在您的问题中说明。即使只是出于好奇,你为什么要想知道?成为一名优秀的 Python 程序员并不意味着您需要这些细节。
0赞 handler404 7/22/2023
是的,我知道我可以深入研究源代码并在那里找到这些数据,但我在阅读 C 源代码方面的专业水平是 0,我问这个问题是希望有人已经打开了这个“潘多拉魔盒”并知道答案。好奇心驱使着我。我知道所有脚本语言都没有自己的输入和输出。我想知道这也适用于 Python 语言

答:

1赞 erogluegemen 7/22/2023 #1

当你写作时,这是在较低级别发生的情况:print('Something')

  1. Python 解释器:Python 解释器负责逐行执行代码。
  2. print() 函数:当解释器遇到该语句时,它首先计算括号内的表达式,在本例中只是一个字符串,“Something”。print('Something')
  3. 系统调用:Python 解释器使用系统调用与操作系统或运行它的环境(例如,控制台或终端)进行通信。系统调用是操作系统提供的接口,用于访问各种低级功能,包括输入/输出操作。
  4. 系统API:系统调用由系统 API 处理。此 API 是操作系统的一部分,允许 Python 解释器与系统的底层 I/O 工具进行交互。它为 Python 解释器提供了一种与控制台或终端通信并显示文本“Something”的方法。
  5. 显示:最后,文本“Something”显示在运行 Python 程序的控制台或终端中。

同样,当您使用:input()

  1. Python 解释器:Python 解释器正在执行您的代码。
  2. input() 函数:当解释器遇到 时,它会暂停 程序的执行并等待用户输入一些文本。input()
  3. 系统API:解释器使用系统 API 来访问 系统的底层 I/O 设施,并等待用户 提供输入。
  4. 用户输入:系统 API 从 控制台或终端,并将其传递回 Python 解释器。
  5. 继续执行:Python 解释器恢复执行 用户提供的输入,您可以将其分配给变量 或根据需要在您的程序中使用它。

因此,总而言之,当您使用 像 print() 和 input() 这样的函数,解释器本身所依赖的 操作系统提供的系统 API 来处理实际的 输入和输出操作。这种抽象允许 Python 工作 跨不同平台和环境无缝衔接。

评论

0赞 erogluegemen 7/22/2023
别客气!我很高兴我能帮到你。如果您还有其他问题,请随时提问。