Re: unable to read the __main__ namespace

2009-12-13 Thread Chris Rebert
On Sun, Dec 13, 2009 at 3:20 AM, vsoler vicente.so...@gmail.com wrote:
 I'm learning Python, and I am very fond of it.

 Using Python 2.6

 I am able to list all the names in a class namespace:

 class abc: pass
 abc.a1=7
 abc.a2='Text'

 print abc.__dict__.keys()

That is more simply written as:

print dir(abc)

 a) However, I do not know how to read the __main__ namespace

 print __main__.__dict__.keys()    # Just does not work

__main__ is not used or set and has no special meaning to the Python
interpreter. It's true that __name__ == __main__ in the body of the
main module, but you can't actually access it by that name.

 b) How do i read an imported module namespace?

import module
print dir(module)

 c) How could I possibly list the names and contents of the namespace
 of my python session?

print dir()

I'd advise reading the docs on it:
http://docs.python.org/library/functions.html#dir

Cheers,
Chris
--
http://blog.rebertia.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: unable to read the __main__ namespace

2009-12-13 Thread Peter Otten
vsoler wrote:

 I'm learning Python, and I am very fond of it.
 
 Using Python 2.6
 
 I am able to list all the names in a class namespace:
 
 class abc: pass
 abc.a1=7
 abc.a2='Text'
 
 print abc.__dict__.keys()
 
 a) However, I do not know how to read the __main__ namespace
 
 print __main__.__dict__.keys()# Just does not work

It should work. Did you forget to

import __main__

before trying?

 b) How do i read an imported module namespace?
 
 c) How could I possibly list the names and contents of the namespace
 of my python session?

The answer to all your questions is dir() for names and vars() for the 
complete namespace dictionary:

 x = 42
 dir()
['__builtins__', '__doc__', '__name__', '__package__', 'x']
 import os
 dir(os)[:5]
['EX_CANTCREAT', 'EX_CONFIG', 'EX_DATAERR', 'EX_IOERR', 'EX_NOHOST']
 vars()
{'__builtins__': module '__builtin__' (built-in), '__package__': None, 
'x': 42, '__name__': '__main__', 'os': module 'os' from 
'/usr/lib/python2.6/os.pyc', '__doc__': None}

Peter
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: unable to read the __main__ namespace

2009-12-13 Thread vsoler
On Dec 13, 12:34 pm, Chris Rebert c...@rebertia.com wrote:
 On Sun, Dec 13, 2009 at 3:20 AM, vsoler vicente.so...@gmail.com wrote:
  I'm learning Python, and I am very fond of it.

  Using Python 2.6

  I am able to list all the names in a class namespace:

  class abc: pass
  abc.a1=7
  abc.a2='Text'

  print abc.__dict__.keys()

 That is more simply written as:

 print dir(abc)

  a) However, I do not know how to read the __main__ namespace

  print __main__.__dict__.keys()    # Just does not work

 __main__ is not used or set and has no special meaning to the Python
 interpreter. It's true that __name__ == __main__ in the body of the
 main module, but you can't actually access it by that name.

  b) How do i read an imported module namespace?

 import module
 print dir(module)

  c) How could I possibly list the names and contents of the namespace
  of my python session?

 print dir()

 I'd advise reading the docs on 
 it:http://docs.python.org/library/functions.html#dir

 Cheers,
 Chris
 --http://blog.rebertia.com

Thank you very much. I now know how to proceed
-- 
http://mail.python.org/mailman/listinfo/python-list