Два поняття можуть допомогти нам краще зрозуміти, чому компільований Python на кодовому машинному коді не може працювати так швидко, як компільований C або інші загальнозбірні мови. Їх називають ранньою зв'язкою та пізньою зв'язкою.
Слід почати з того, що я не експерт Python, і я прийшов на цей сайт випадково. Але мені подобається цей сайт.
Як було сказано в іншій відповіді тут, компілятор C ++ може знати багато про програму та приймати рішення щодо того, які операції використовувати для конкретних структур даних. Як приклад, якщо дві цілі змінні потрібно додати разом, компілятор знає, що вони є власними цілими числами, наприклад, 32 біти шириною, і він може додати їх разом з однією інструкцією "ADD". Таким чином, вона компілює інструкцію ADD у код. Він заблокований і не може бути змінений під час роботи програми. Це рання обов'язковість.
З іншого боку, на такій мові, як Python, ми могли б очікувати, що програма поєднує різні типи даних разом складними способами. Тепер компілятор не знає, чи наші 2 змінні - цілі числа, плавці, рядки чи списки. Таким чином, він повинен скласти код, який визначає цю інформацію під час виконання, та вибрати правильну операцію під час роботи програми. Це є пізнім прив'язкою, і ми можемо зрозуміти, що під час роботи програми буде досягнуто додаткової роботи. Це ціна, яку ви платите за збереження цих параметрів відкритими на такій мові, як Python, але це забезпечує максимальну гнучкість роботи.