create global variables?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • aking@mappi.helsinki.fi

    #1

    create global variables?



    J. Clifford Dyer wrote:
    Alistair King wrote:
    >
    >Hi,
    >>
    >is there a simple way of creating global variables within a function?
    >>
    >ive tried simply adding the variables in:
    >>
    >def function(atom, Xaa, Xab):
    > Xaa = onefunction(ato m)
    > Xab = anotherfunction (atom)
    >>
    >if i can give something like:
    >>
    >function('C' ) #where atom = 'C' but not necessarly include Xaa or Xab
    >>
    >i would like to recieve:
    >>
    >Caa = a float
    >Cab = another float
    >>
    >ive tried predefining Xaa and Xab before the function but they are
    >global values and wont change within my function. Is there a simple way
    >round this, even if i call the function with the variables ('C', Caa, Cab)?
    >>
    ............... ............... ............... ............... ............... ............... ............... ............... ........
    >>
    >some actual code:
    >>
    ># sample dictionaries
    >DS1v = {'C': 6}
    >pt = {'C': 12.0107}
    >>
    >def monoVarcalc(ato m):
    > a = atom + 'aa'
    > Xaa = a.strip('\'')
    > m = atom + 'ma'
    > Xma = m.strip('\'')
    > Xaa = DS1v.get(atom)
    > Xma = pt.get(atom)
    > print Xma
    > print Xaa
    >>
    >monoVarcalc('C ')
    >>
    >print Caa
    >print Cma
    >>
    ............... ............... ............... ............... ............... ............... ............... ............... ........
    >it seems to work but again i can only print the values of Xma and Xaa
    >>
    >?
    >>
    >Alistair
    >>
    >>
    >
    I suspect you are misusing the concept of a function. In most basic
    cases, and I suspect your case applies just as well as most, a function
    should take arguments and return results, with no other communication
    between the calling code and the function itself. When you are inside
    your function don't worry about the names of the variables outside. I'm
    not sure exactly where your floats are coming from, but try something
    like this:
    >
    >>def monoVarCalc(rel evant_data):
    ... float1 = relevant_data * 42.0
    ... float2 = relevant_data / 23.0
    ... return float1, float2
    >
    >>C = 2001
    >>Caa, Cab = monoVarCalc(C)
    >>Caa
    84042.0
    >>Cab
    87.0
    >
    Notice that you don't need to use the variable C (or much less the
    string "C", inside monoVarCalc at all. It gets bound to the name
    relevant_data instead.
    >
    Also, if you are going to have a lot of these little results lying
    around, (Cab, Cac ... Czy, Czz), you might consider making them a list
    or a dictionary instead. I won't tell you how to do that, though. The
    online tutorial has plenty of information on that.
    >
    Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python’s elegant syntax an...

    >
    >
    Cheers,
    Cliff
    >
    this worked a treat:

    def monoVarcalc(ato m):

    a = atom + 'aa'
    Xaa = a.strip('\'')
    m = atom + 'ma'
    Xma = m.strip('\'')
    Xaa = DS1v.get(atom)
    Xma = pt.get(atom)
    return Xaa, Xma


    Caa, Cma = monoVarcalc('C' )


    thanks

    Ali

    --
    Dr. Alistair King
    Research Chemist,
    Laboratory of Organic Chemistry,
    Department of Chemistry,
    Faculty of Science
    P.O. Box 55 (A.I. Virtasen aukio 1)
    FIN-00014 University of Helsinki
    Tel. +358 9 191 50392, Mobile +358 (0)50 5279446
    Fax +358 9 191 50366



Working...