Strong Points on Functions
You are on point on several things here. One thing that I have started to implement more is the thought that the function should only solve ONE issue. Might as well just write more functions to help you out. If you write a function that solves A and B you can not use A or B alone. It is better to make sure you can re-use A and B whenever you want. Easy mistake…
When it comes to documentation, I have also talked about that in one of my first articles:
Document Your Python Code Without Writing Documentation
Things to consider while writing your code
You can document your code in your code. You often do not have time to do the excessive documentation that big projects require.