How to pass a global variable to a module?

Mars creature jinbow at gmail.com
Wed Sep 30 16:11:05 EDT 2009


On Sep 30, 5:31 am, Jean-Michel Pichavant <jeanmic... at sequans.com>
wrote:
> Mars creature wrote:
> > On Sep 29, 12:49 pm, "Rami Chowdhury" <rami.chowdh... at gmail.com>
> > wrote:
>
> >> On Tue, 29 Sep 2009 09:40:29 -0700, Mars creature <jin... at gmail.com> wrote:
>
> >>> Dear Python users,
> >>>   I just start to use python and love this language. I met this
> >>> problem when I try to save my functions in a separate file.
> >>> The question is how I can pass a global variable to a function which
> >>> is saved in another file. If I save the function I defined in the same
> >>> file with the main program, there is no problem after I declare the
> >>> global variable. But problem comes out when I save all the function is
> >>> a separate file. Help is very much appreciated! Thanks!
> >>> Jinbo
>
> >> In Python, as in many other languages, I'd advise that you think about  
> >> whether your variable needs to be global, or whether you could (or should)  
> >> simply pass the variable to the function as a parameter.
>
> >> HTH,
> >> Rami
>
> >> --
> >> Rami Chowdhury
> >> "Never attribute to malice that which can be attributed to stupidity" --  
> >> Hanlon's Razor
> >> 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD)
>
> > Thank you guys for the prompt and helpful response.
> > >From the link Gregor posted, it seems no way to share variable between
> > modules.
>
> > I can understand the point that global variables tends to mess up
> > programs.
>
> > Assume that I have 10 parameters need to pass to the function. If
> > these parameters are fixed, I can use another module to store these 10
> > parameters, and import to the module, as suggested by jean-michel. But
> > what if these 10 parameters will be changed in the main program?
> > Passing the variable to the function as a parameter suggested by Rami
> > will certainly do, but I am wondering weather there are other ways.
> > What you'd like to code it?
> > Thank you very much!
> > Jinbo
>
> Why don't you post the function you're trying to code, with the
> parameter names ?
> Write the documentation for that function, write what it is supposed to
> do, the parameters, their purpose and the returned value. Just by doing
> this, you may be able to find all by yourself what should be the correct
> function prototype.
>
> JM

The function I am trying to code is quite simple and nothing special.
I guess what I wanted to say was how to avoid typing all parameters
everytime I am using the function. I used to use common block in
Fortran to keep the frequently used data. I could've put all
parameters in a file and import it, if they are unchangable. But in my
case the parameters are changing.

Allow me to say, unpacking the list or dictionary is the answer I
wanted, although this is too trivial for some of you.

Based on the discussion (correct me if I'm wrong),
1, try to avoid global,
2, if parameters are constant, put them in a tuple/list/dictionary and
import them
3, if parameters are changeable, pack them into a list/dictionary and
use *params (for list) or **params (for dict) to unpack and pass to
the function.

I want to thank you all! It's quite bit learning for me from your
discussion.
Jinbo



More information about the Python-list mailing list