как н.м. под вашим постом прокомментированы, переменные не имеют типа в Python. Значения делают.
Насколько определяется целое число против числа с плавающей запятой при вводе следующего:
x = 1.5
y = 2
Это определяется на этапе анализа. Скомпилированные и интерпретированные языки фактически начинаются одинаково.
Общий поток при отправке кода интерпретатору / компилятору выглядит следующим образом:
[source code] --> lexical analyzer --> [tokens] --> parser --> [abstract syntax tree] -->
Шаг синтаксического анализа проверяет токены, такие как 'x' '=' '1.5', и ищет шаблоны, которые указывают на различные типы литералов, таких как int, float и string. К тому времени, когда фактический интерпретатор / компилятор получает абстрактное синтаксическое дерево (древовидное представление вашей программы), он уже знает, что значение, хранящееся в x (1.5), является плавающей точкой.
Так что, для ясности, эта часть процесса концептуально одинакова для интерпретаторов и компиляторов.