Variables with cross-module usage

Rami Chowdhury rami.chowdhury at gmail.com
Sat Nov 28 17:46:37 EST 2009


Hi Nitin,

On Sat, Nov 28, 2009 at 14:36, MRAB <python at mrabarnett.plus.com> wrote:
> Nitin Changlani. wrote:
>> three.py
>> ------------
>> import one
>> import two
>>
>> def argFunc():
>>    one.x = 'place_no_x'
>>    one.a = 'place_no_a'
>>    one.b = 'place_no_b'
>>

I think this is what is biting you. You might expect that after
argFunc, one.x would be set to 'place_no_x' and so on. However,
Python's scoping doesn't work like that -- the name one.x is only
rebound in the function's scope, so outside of argFunc (e.g. in your
main printing code) one.x is still bound to 'place_x'.

HTH,
Rami



More information about the Python-list mailing list