If everything has at least one print statement you are doing it wrong. Functions in modules should return data, it is then the task of the view to present this data, which could be as simple as printing it or could involve rendering it to html, pdf, a gui, sending an email or whatever.<p>People know that global variables are a bad thing but fail to realize that print &quot;foo&quot; is essentially equivalent to global_variable_output_buffer+=&quot;foo&quot;. It simply shouldn&#x27;t be scattered around everywhere.<p>This is not just academic nonsense, I was once given the task to parallelize the code in a large python code base, and to send the output in an email instead of printing to console. It would have been an easy job but a lot of the code was using print just the way you describe it causing intermingled output in the console when run in parallel.