can I do it the otherway, that issavedata('nameoflist')

for limited cases where your variable is defined globally, you can use:

  >>> a = [1,2,3,4]
  >>> def save(s):
  ...     print globals().get(s, "UNDEFINED")
  ...
  >>> save("a")
  [1, 2, 3, 4]
  >>> save("b")
  UNDEFINED
  >>> b = (6,5,4,3)
  >>> save("b")
  (6, 5, 4, 3)

However, it's a hideous hack, and fragile as demonstrated by

  >>> x = 7000
  >>> def baz():
  ...     x = (7,8,9) # this isn't in save()'s globals()
  ...     save("x")
  ...
  >>> baz()
  7000
  >>> x = 8000
  >>> baz()
  8000

and using locals() doesn't help either:

  print locals().get(s, globals().get(s, "UNDEFINED"))

and has even weirder (but totally understandable) behavior:

  >>> save("s")  # "s" hasn't been defined in globals()
  's'

Just pass the filename as a string, and skip trying to sniff internal variable-names. Or you'll experience a world of headaches.

-tkc




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

Reply via email to