Разъяснение типов данных в python

Одна вещь увлекала меня с давних времен. В таких языках, как c, нам нужно объявлять типы данных, например, integer как int, character as char и т. Д. Я имею в виду, что мы передаем информацию о типе данных компилятору C.
Но в python, скажем, я объявляю

c = 2 

Затем компилятор интерпретирует c как целое. И если я объявляю

 c = "a" 

компилятор интерпретирует c как символ. Мое сомнение заключается в том, как компилятор знает, как назначить соответствующий тип данных на c без явного объявления его. Это может быть основным вопросом для экспертов python, но пролить свет на это

Python – динамически типизированный язык .

Компилятор не интерпретирует информацию о типе при компиляции кода python. Это всего лишь объекты с методами, и ваш собственный код используется для использования значений по своему усмотрению.