Lendo o seu pedido de ajuda, dá a impressão de que você já possui um entendimento de como a lógica de programação funciona e consegue escrever funções específicas para determinados requisitos. No entanto, parece ter dificuldade em compreender conceitos mais abstratos.
Esse tipo de dúvida é muito comum. Eu mesmo estive em uma situação semelhante quando terminei minha graduação e melhorei quando comecei meu primeiro emprego.
Uma pergunta para você: já desenvolveu algum projeto para alguém, mesmo que seja para si mesmo?
Estou perguntando isso porque tenho a impressão de que você gosta muito do conhecimento estruturado, mas há alguns conceitos que só aprendemos quando trabalhamos em algum projeto que atinge massa crítica, para que os conceitos mais avançados e abstratos façam sentido.
Por exemplo, você mencionou módulos em Python. Se trabalhar em um projeto pequeno, os módulos não ajudam muito. Você observará os benefícios dos módulos em projetos um pouco maiores. Da mesma forma, existem vários padrões de projeto que só ajudam em projetos de certo tamanho.
Minha sugestão é tentar desenvolver alguma aplicação de certa complexidade. Evite os aplicativos simples de lista de tarefas. Tente algo como um jogo simples ou um banco de dados simples em arquivo, algo de dificuldade mediana para você poder aplicar seus conhecimentos.