create global variables?

Steve Holden steve at holdenweb.com
Tue Oct 31 11:01:28 CET 2006

```Alistair King wrote:
> Steve Holden wrote:
>
>>aking at mappi.helsinki.fi wrote:
>>
>>
>>>J. Clifford Dyer wrote:
>>>
>>>
>>>
>>>>Alistair King wrote:
>>>>
>>
>>
>>
>>
>>>this worked a treat:
>>>
>>>def monoVarcalc(atom):
>>>
>>>   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')
>>>
>>>
>>
>>In which case I suspect you will find that this works just as well:
>>
>>def monoVarcalc(atom):
>>
>>    Xaa = DS1v.get(atom)
>>    Xma = pt.get(atom)
>>    return Xaa, Xma
>>
>>
>>Unless there is something decidedly odd about the side-effects of the
>>statements I've removed, since you never appear to use the values of a,
>>m, Xaa and Xma there seems little point in calculation them.
>>
>>regards
>>  Steve
>>
>
> Yup...it works..but now i have to create a dictionary of 'a' and 'm',
> ie... "Xaa" and "Xma" string, key:value pairs so i can use other
> functions on the Xaa, Xma variables by iterating over them and
> retrieving the values from the variables. I think if i just input Xaa
> and Xma, only the values associated with those variables will go into
> the dictionary and ill just be iterating over nonsence.....
>
> atomsmasses = {}
>
> def monoVarcalc(atom):
> a = atom + 'aa'
> m = atom + 'ma'
> atomsmasses[a]=m
> Xaa = a.strip('\'')
> Xma = m.strip('\'')
> Xma = pt.get(atom)
> if DS1v.get(atom) != None:
> Xaa = DS1v.get(atom)
> else:
> Xaa = 0
> return Xaa, Xma
>
> Caa, Cma = monoVarcalc('C')
> Oaa, Oma = monoVarcalc('O')
> Haa, Hma = monoVarcalc('H')
> Naa, Nma = monoVarcalc('N')
> Saa, Sma = monoVarcalc('S')
> Claa, Clma = monoVarcalc('Cl')
> Braa, Brma = monoVarcalc('Br')
> Znaa, Znma = monoVarcalc('Zn')
>
>
>
> i think? :)
> thanks
>
> a
>
No fair: you only just added atomsmasses! ;-)

However, it seems to me that your atomsmasses dictionary is going to be
entirely predictable, and you are still focusing on storing the *names*
of things rather than building up a usable data structure. Indeed I
suspect that your problem can be solved using only the names of the
elements, and not the names of the variables that hold various
attributes of the elements.

Perhaps if you explain in plain English what you *really* want to do we
can help you find a more Pythonic solution. It'll probably end up
something like this:

mass = {}
for element in ['C', 'O', ..., 'Zn']
mass[element] = monoVarcalc(element)

But I could, of course, be completely wrong ... it wouldn't be the first
time. Do you understand what I'm saying?

regards
Steve
--
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC/Ltd          http://www.holdenweb.com
Skype: holdenweb       http://holdenweb.blogspot.com
Recent Ramblings     http://del.icio.us/steve.holden

```