Фундаментальные знания для программиста?
Всякие глубоко теоритические математики да теории алгоритмов, да сортировки - штука полезная для тренировки мозга, но не полезная на практике.
Не знания теоретические важны.А практические знания, практический опыт.
Каждодневной основной для программиста является его собственная практика и т.н. "лучшие практики" и т.н. "паттерны" (которые не стоит учить, они сами придут, но почитать про них все же стоит).
Лучший способ:
Пойти работать в крупную компанию, где более опытные коллеги.
Самостоятельно - худший способ, но можно:Читать актуальные статьи по твоим технологиям. Читать актуальные статьи по технологиям в смежных с твоей областям.
Обычно в университете дают фундаментальные знания. Да и для разных специалистов они нужны разные.
Разработчики игр должны знать физику, веб-разработчики - уметь проектировать базы данных.
За python сказать не могу - но вот за php вполне. Первое что нужно сделать - определить последовательность цикла разработки, для веб разработки, из личного опыта, выделяю такие этапы:Составляем ТЗСоздаем дизайнПроектируем БДПишем логику сайтаОтладка
Нарушение последовательности или пропуск пункта - ведет к необратимому краху. Тут еще важно не быть перфекционистом, не нужно стараться впихнуть все функции в первый релиз, в этом случае можно даже не начинать писать ТЗ, ничего не выйдет, также как и ваша программа никогда не выйдет. Нужно ограничиться базовым функционалом.
Относительно веба:  нужно хоть минимально работать с git, применять различные сборщики которые экономят тонну времени (grunt, gulp), использовать пакетные менеджеры (composer, npm; в случае python это pip), использовать фреймворки и CMS (не изобретать велосипеды), уметь изобретать велосипеды (для мелких одноразовых задач).
Поймите для каких целей вам нужен python и начните изучать все стороны вопроса. Белые пятна увидите сами.