Scopes and exceptions
Carsten Geckeler
nospam at no.spam
Fri Dec 15 12:54:47 EST 2000
More information about the Python-list mailing list
Fri Dec 15 12:54:47 EST 2000
- Previous message (by thread): compiled or interpreted?
- Next message (by thread): Scopes and exceptions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Fri, 15 Dec 2000, Hans Nowak wrote: > Magnus Heino wrote: > > > > Could someone please explain this to me: > > > > [magnus at daysleeper magnus]$ cat e.py > > > > a = 'test' > > b = 'test' > > > > print 'a = %s' % id(a) > > print 'b = %s' % id(b) > > > > def func(): > > print "'test' = %s" % id('test') > > > > func() > > > > try: > > test, '%s' % (a,) > > except NameError, e: > > print 'e = %s' % id(e) > > print 'a = %s' % id(a) > > print 'b = %s' % id(b) > > print "'test' = %s" % id('test') > > > > [magnus at daysleeper magnus]$ python e.py > > a = 136227368 > > b = 136227368 > > 'test' = 136227368 > > e = 135997204 > > a = 136227368 > > b = 136227368 > > 'test' = 136227368 > > [magnus at daysleeper magnus]$ > > I don't understand what is so special about this? Python stores a string > 'test' in memory... a points to this string, then b, so id(a), id(b) and > id('test') all yield the same result. This is also the case after the > exception. Variable e has a different id, because it's a different > variable; not a string, but an instance of exceptions.NameError. It _is_ a string, but it's not 'test' but "There is no variable named 'test'" therefore the ids are different. But the point of Magnus' mail was if id(a) == id('%s' % (a,)) and it is *not*. Cheers, Carsten -- Carsten Geckeler: carsten dot geckeler at gmx dot de To get proper email-address replace `dot' and `at' by the corresponding symbols.
- Previous message (by thread): compiled or interpreted?
- Next message (by thread): Scopes and exceptions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list