@mikael: jesus and wtf and a lot more... :)
I come from Basic (ZX81) and be sure i know nothing about best practice. I have only some experience.
Changing the same variable within 2 defs at the same section of code is a good error source.
And for Return, its easy you just return a value (or more).def function1(): variable1 = 'Hallo World' return variable1 def function2(str1): return 'Hello ' + str1 print(function1()) print(function2('World'))