foo = 123 def myfunc(foo="bar"): global foo # problem!
foo = 123 def lol(foo="bar"): print(globals()["foo"], foo)
Your example is a SyntaxError, it doesn't even compile:
In [1]: def myfunc(foo="bar"): ...: global foo Input In [1] global foo ^ SyntaxError: name 'foo' is parameter and global
That's why I said nonlocal or global ;)