Nie jest tak, że Python nie może, ale tak nie jest. Różnica polega na systemach typów, które wybierają projektanci języków.
W języku Python używane jest pisanie kaczkami, a do wpisywania obiektów należą nietypowe nazwy zmiennych. Ograniczenia typu nie są sprawdzane podczas kompilacji; raczej operacje na obiekcie mogą się nie powieść, co oznacza, że dany obiekt nie jest odpowiedniego typu. Pomimo tego, że jest napisany dynamicznie, Python jest silnie typowany, zabraniając operacjom, które nie są dobrze zdefiniowane (na przykład dodanie numeru do ciągu znaków), zamiast cicho próbować je zrozumieć.
Scala jest językiem pisanym statycznie, tzn. Typy są sprawdzane podczas kompilacji. Mechanizm wnioskowania lokalnego typu dba o to, aby użytkownik nie był zobowiązany do adnotowania programu za pomocą nadmiarowych informacji o typie. Operacje, które łamią wiązania typów, prowadzą do błędów kompilatora, a nie błędów środowiska wykonawczego. Zobacz także The Purpose of Scala's Type System, szczególnie w sekcji, w której omawia się pisanie kaczkami.
Scala zawiera typy. Po prostu nie musisz ich wpisywać przez cały czas (kalambur przeznaczony). – Thilo
Nie sądzę, że jest to duplikat. Drugie pytanie dotyczy raczej "dlaczego Python w ogóle nie wymaga pisania". – Thilo
@Emil: Dlaczego każdy chce, aby cały język programowania wyglądał tak samo? – pyfunc