Существует разница между зарезервированными ключевыми словами и встроенными .
Встроенные функции, такие как int
, str
и float
, на самом деле являются просто часто используемыми классами. Классы могут быть переназначены / переопределены, и это именно то, что вы сделали здесь, написав int = 7
.
Ключевые слова, такие как as
, if
и while
, являются очень специальными идентификаторами. Они не могут быть отменены. Если вы попытаетесь написать as = 10
, вы получите SyntaxError
.
Вот причина вашей ошибки: во-первых, вы дали int
значение 7
. Это абсолютно законно, потому что buildins могут быть переназначены. После этого ввод int(int)
аналогичен вводу 7(7)
. 7
нельзя вызывать как функцию, поэтому в результате получается TypeError
.