Confused by List behavior

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


ejbaker_seekonk at my-deja.com 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 
themselves. 

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