Confused by List behavior

Gordon McMillan gmcm at
Thu Apr 20 08:14:18 EDT 2000

ejbaker_seekonk at wrote:

> As a python newbie, I entered this script to explore list processing
> behaviours.
> yy = dir()
> for element in yy:
>   print element
> for element in yy:
>   print dir(element)
> The first 'for' loop works as expected. It returns,
> ['__builtins__', '__doc__', '__name__'].
> The second loop, however, returns three empty lists. For the life of
> me, I can't understand that. Becauese, if I type 'dir(__builtins__)',
> in a script, I get all of the elements of __builtins__.

You're confused by dictionaries, not lists. dir() returns the 
names of the objects (that is, a list of strings), not the objects 

One way:
  for element in dir():
    print dir(eval(element))

More sensibly:
  for key, val in vars().items():
    print key, val, dir(val)

- Gordon

More information about the Python-list mailing list