I know that I can write:
foo = 'bar'
def update_foo():
global foo
foo = 'baz'
But do I really need two lines of code there? Python, alas, won’t allow me to say
global foo = 'baz'
I could also mash the two lines together with the unfortunately repetitive
global foo; foo = 'baz'
Any other shortcuts? I’m on Python 2.6.5, but I’d be curious to hear responses for Python 3 as well.
You could use my favorite alternative to
global(a pretty idiosyncratic taste…):Once you’ve made the
thismodulereference, you don’t need to useglobalin this module, because you’re always working with qualified names rather than bare names (a much better idea IMHO… but maybe in MHO only, I’ve not been able to convince Guido to supplythismodule[[or some other identifier with this functionality]] back when Python 3 was gestating).Note that the first assignment to
foo, at global level, can be done either with this explicit syntax, or by assigning to barenamefooas you do in your code (I guess it’s not surprising that my preference goes to the explicit form, though, in this case, just barely).