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:
>>>>      
>>
>>[... advice and help ...]
>>
>>  
>>
>>>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




More information about the Python-list mailing list