

The high-level directory structure looks reasonable, but every language and build tool has its own recommended structure that people should use instead. For example, by default, cargo looks for a src/main.rs or src/lib.rs as an entrypoint. uv expects one of a couple different project structures before you need to touch the pyproject.toml. C# will create namespaces for each of these nested subdirectories if you don’t carefully configure it in your .csproj file. And so on.
It’s best to just use whatever’s recommended for your environment by your tools. Maybe this directory structure works well for Guile Scheme, but I wouldn’t touch it at all if I were writing Rust.
Rust would be more efficient. Hand written assembly would be more efficient. Using butterflies to manually flip bits in the memory would be more efficient.
OP wanted to use Python. It’s not a very large program. It really doesn’t matter.