On Tue, 29 Mar 2005 11:23:45 -0500, Bill Mill <[EMAIL PROTECTED]> wrote:
>On Tue, 29 Mar 2005 14:34:39 GMT, Ron_Adam <[EMAIL PROTECTED]> wrote: >> On 28 Mar 2005 23:01:34 -0800, "Dan Bishop" <[EMAIL PROTECTED]> wrote: >> >> >>>> def print_vars(vars_dict=None): >> >... if vars_dict is None: >> >... vars_dict = globals() >> >... for var, value in vars_dict.items(): >> >... print '%s = %r' % (var, value) >> >... >> >>>> myPlace = 'right here' >> >>>> myTime = 'right now' >> >>>> print_vars() >> >print_vars = <function print_vars at 0x401e0d84> >> >__builtins__ = <module '__builtin__' (built-in)> >> >myTime = 'right now' >> >myPlace = 'right here' >> >__name__ = '__main__' >> >__doc__ = None >> >> Fred = 5 >> John = 8 >> Winner = John >> >> Both John and Winner are pointing to the literal '8'. > >ummm, yes, of course they are. What's your point? Hi Bill, My point is if you look up the name and print it, you may get. Instead of: Fred has 5 points John has 8 points You could get: Fred has 5 points Winner has 8 points Or something else depending on how many references you made to the value 8. >> Mixing data and program code, ie.. variable names as data, is not a >> good idea. > >Down with eval! Exile exec! A pox on both their houses! > >(i.e. I respectfully disagree that mixing data with program code is a bad idea) (I respectfully acknowledged your opinion.) To be fair, it's not always bad. But in most cases it is better not too. I wasn't referring to using exec or eval, but to directly using data values in the program code. Here's an example of mixing data and code. If I write a program that checks a list for specific names and prints corresponding value for each. I would not do this: ( Lots of stuff wrong with this example! ) playerlist = ['John','Bob','Fred'] John = 6 Bob = 8 Fred = 0 for name in playerlist: if item == 'John': print 'John', John if item == 'Bob': print 'Bob', Bob This is only good for one set of data, and each time my data changes, I would need to rewrite the program code also. This has data as program code in both the variables and in the comparisons. Not mixing data and code: playerlist = {'John':6, 'Bob':8, 'Fred',0} players = ['John', 'Bob'] for name in players: print name, playerlist[name] This does the same thing as above, but data and program code are not mixed. It's much easier to maintain and reuse. Ron >Peace >Bill Mill >bill.mill at gmail.com -- http://mail.python.org/mailman/listinfo/python-list