Как интерпретатор Python получает и выводит данные?

Что происходит, когда я пишу print('Something')? Работает ли интерпретатор напрямую с системными средствами ввода-вывода, или он использует какой-то системный API, который выдает информацию о том, что что-то нужно вывести в консоль?

Аналогично для ввода. Если я вызову функцию input(), то читать входные значения будет сам интерпретатор python, либо он снова делегирует эту работу какому-то системному API, который будет оборачивать ввод.

Я знаю, что python написан на языке C (по крайней мере, его основная реализация). Получается, что именно язык Си внутри интерпретатора отвечает за ввод/вывод?

Все мои попытки найти ответ сводятся к статьям, где мне рассказывают, что в input() нужно нажать кнопку с клавиатуры, и функция print() что-то напечатает в консоли. Я уже знаю это, я хочу знать, что происходит на уровне ниже.

Python имеет открытый исходный код, поэтому исходный код доступен для просмотра. Это может быть немного ошеломляющим для новичка, особенно для того, кто плохо знает C. Итак, пожалуйста, скажите нам, почему вы задаетесь этим вопросом? Есть ли у вас основная проблема, которую, по вашему мнению, решит это знание? Тогда спросите об этом напрямую. Или это простое любопытство? Любопытство не является неправильным, но, пожалуйста, укажите это в своем вопросе. И даже если это просто из любопытства, зачем тебе знать? Быть хорошим программистом на Python не означает, что вам нужны эти детали.

Some programmer dude 22.07.2023 08:28

Да, я понимаю, что могу покопаться в исходниках и найти там эти данные, но мой уровень экспертизы в чтении исходников на С равен 0, я задал вопрос в надежде, что кто-то уже открывал этот "ящик Пандоры" и знает ответ. Любопытство движет мной. Я знаю, что все языки сценариев не имеют собственного ввода и вывода. И я хотел узнать, что это относится и к языку Python.

handler404 22.07.2023 08:36
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы пишете print('Something'), вот что происходит на более низком уровне:

  1. Интерпретатор Python: интерпретатор Python отвечает за выполнение вашего кода построчно.
  2. Функция print(): Когда интерпретатор встречает оператор print('Something'), он сначала оценивает выражение в круглых скобках, которое в данном случае является просто строкой, 'Something'.
  3. Системный вызов: интерпретатор Python использует системный вызов для связи с операционной системой или средой, в которой он работает (например, с консолью или терминалом). Системный вызов — это интерфейс, предоставляемый операционной системой для доступа к различным низкоуровневым функциям, включая операции ввода/вывода.
  4. Системный API: системный вызов обрабатывается системным API. Этот API является частью операционной системы и позволяет интерпретатору Python взаимодействовать с базовыми средствами ввода-вывода системы. Он предоставляет интерпретатору Python возможность взаимодействовать с консолью или терминалом и отображать текст «Something».
  5. Отображение: наконец, текст «Something» отображается в консоли или терминале, где вы запускаете программу Python.

Точно так же, когда вы используете input():

  1. Интерпретатор Python: интерпретатор Python выполняет ваш код.
  2. Функция input(): Когда интерпретатор встречает input(), он делает паузу выполнение программы и ждет, пока пользователь введет некоторый текст.
  3. Системный API: интерпретатор использует системный API для доступа к базовые средства ввода-вывода системы и дождитесь, пока пользователь предоставить ввод.
  4. Пользовательский ввод: системный API фиксирует ввод пользователя из консоль или терминал и передает его интерпретатору Python.
  5. Продолжить выполнение: интерпретатор Python возобновляет выполнение с ввод, предоставленный пользователем, и вы можете назначить его переменной или используйте его в своей программе по мере необходимости.

Таким образом, когда вы взаимодействуете с интерпретатором Python, используя таких функций, как print() и input(), сам интерпретатор полагается на системные API, предоставляемые операционной системой для обработки фактических операции ввода и вывода. Эта абстракция позволяет Python работать бесшовно на разных платформах и средах.

Пожалуйста! Я рад, что смог тебе помочь. Если у вас есть еще вопросы, не стесняйтесь спрашивать.

erogluegemen 22.07.2023 12:48

Другие вопросы по теме