Форум сайта python.su
FishHook
Спасибо огромное за уточнение. В описании для топикстартера я не стала подробнее, чтобы не усилить имеющуюся кашу. Итак, про виртуальное окружение ему лишнее сейчас.
Я с удовольствие проговорю и исправлю свои ошибки, чем продолжать заблуждаться. Вдруг я неверно понимаю или не все знаю. Вот что я знаю.
1) Интерпретаторов много. Стандартным является CPython
2) В стандартной установке python я получаю:
- интерпретатор;
- IDLE;
- документацию;
- tkinter.
Особенности:
- для windows, кажется c версии 3.5, появился запускающий модуль;
- для некоторых версий Linux библиотека tkinter не является стандартным устанавливаемым компонентом.
3) Интерпретатор python имеет встроенный REPL он же интерактивный интерпретатор с gui (спасибо курсу от MIT на eDx за знакомство с REPL python)
4) Хотя в статьях и книгах пишут, что python относится к интерпретируемым ЯП, но на самом деле у python динамическая компиляция и результат этой компиляции получаем не машинный код, который интерпретируется/выполняется непосредственно процессором. У python это происходит в PVM (python virtual machine), PVM является частью интерпретатора.
5) У интерпретатора есть командная оболочка и интерпретатору можно через командную строку передавать аргументы запуска интерпретатора, которые влияют на режим работы интерпретатора.
анализ аргументов командной строки;
установка флагов программы;
чтение переменных среды и т.д
6) Когда пользователь запускает скрипт, интерпретатор автоматически осуществляет подготовительные процессы (чтение аргументов запуска, переменных среды и что-то еще, я не помню), а затем автоматически выполняет 4 процесса, :
- разбор на опознаваемые группы (токенизация);
- проверка форматирования и синтаксический анализ (парсинг). На этом этапе прервется запуск, если проблема в синтаксисе;
- компиляция в промежуточный платформонезависимый код;
- выполнение в виртуальной машине (интерпретация).
7) Если у процесса есть разрешение на запись, то python хранит скомпилированный в байт-код результат в .pyc файлах, как вы и писали. Так же автоматически произведет компиляцию заново и перезапишет pyc, если я внесу изменения в исходный файл .py
Хотя я могу все это пересказывать словами, но знаю очень поверхностно. Токенизация, парсинг, компиляция и так далее все равно многое для меня сейчас выглядят как: “Магия, магия и еще раз магия”, потому что у меня сейчас низкий уровень знаний и умений
Офлайн
Vadim123Я уже хз, что вы имеете ввиду под этими словами. Да в Visual Studio IDE есть анализатор кода для python:
А есть Visual Stidio с питоном?
py.user.nextупс, не знала, что Лутц там украденный.
У него там Лутц бесплатный типа и ссылка ведёт на Google Drive
А вот официальная ссылка
https://www.oreilly.com/library/view/learning-python-5th/9781449355722/
Лутц такой заморочился над книжкой, пошёл, проплатил издание её в издательстве, а потом с доброй душой стал раздавать её бесплатно всем.
Офлайн
Ocean
Часто используют на мой взгляд некорректную терминологию, и разделяют языки на “компилируемые” и “интерпретируемые”, что есть глупости. Я для себя вижу это так. Компьютер - это инструмент моделирования реальности. Бухгалтерская программа, это модель реального процесса учета товарно-материальных ценностей, например. Ценность компьютера в том, что с его помощью можно создавать модели реально несуществующих вещей. Например, браузер, не имеет какого-то очевидного материального аналога. Тем не менее, мы имеем нечто цельное, что имеет набор уникальных свойств, и мы называем это браузером. Мы можем создавать модели вполне конкретных предметов, например автомобиля, и с некоторыми ограничениями мы можем использовать модель автомобиля для каких-то своих целей, например устраивать на нем гонки, без опасности разбиться. Мысль, к которой я подвожу такова - мы можем построить модель физически неосуществимого автомобиля, и по прежнему его использовать для наших целей. В жизни вряд ли возможно построить автомобиль с ядерным реактором на борту, разгоняющийся до 0,9 скорости света. А смоделировать такую машину можно вполне и более того устраивать на ней гонки. Так вот. Питон и куча других интерпретаторов, это модель несуществующего процессора. Построить такой процессор в железе было бы слишком дорого и бессмысленно, потому что он был бы медленнее обычного x86, но сделать виртуальную машину - почему бы и нет? А в остальном, все то же самое. Язык вполне себе компилируется. Только компилируется в машинный код виртуальной машины, а не реальной. Вся разница.
Отредактировано FishHook (Июль 20, 2021 14:01:05)
Офлайн
Vadim123Считайте что есть ссылку вам уже Ocean дала выше.
А есть Visual Stidio с питоном? Как вам эта среда разработки?
[code python][/code]
Отредактировано PEHDOM (Июль 20, 2021 21:17:20)
Офлайн
FishHookСпасибо большое, что все по полочкам.
Так вот. Питон и куча других интерпретаторов, это модель несуществующего процессора. Построить такой процессор в железе было бы слишком дорого и бессмысленно, потому что он был бы медленнее обычного x86, но сделать виртуальную машину - почему бы и нет? А в остальном, все то же самое. Язык вполне себе компилируется. Только компилируется в машинный код виртуальной машины, а не реальной. Вся разница.
Офлайн
Ocean
К сожалению, по внутренней кухне питона информации крайне мало, даже система команд толком нигде в официальных документах не описана. Я знаю только одно детальное описание, как это работает
https://leanpub.com/insidethepythonvirtualmachine/read, но пробраться через него довольно сложно, для меня по крайней мере
Офлайн
FishHook
о, спасибо!)
Да, я тоже эту грызть пыталась. Она у меня в конспекте в подборке. Подумала, что мне рано еще, потому что почти все непонятно
Я вот эту читала и разбирала и отсюда брала в основном сведения про интерпретатор и из Лутца.
Благодаря py.user.next уже узнала, что не все статьи в бложиках содержат нормальную и полезную информацию. Я так начиталась ереси про docstringи и py.user.next помог понять что к чему )
Теперь поняла, что надо умных людей на форуме спрашивать и черпать из хороших проверенных источников. Дури у меня в своей голове хватает) Куда мне еще чья-то.
Офлайн