On 05/07/2015 11:23 PM, Alex Kleider wrote:
On 2015-05-07 19:10, Dave Angel wrote:

def get_name(localmap, item):
     """As suggested.
     Returns 'a' name, not necessarily 'the' name."""
     for name in localmap:
         if localmap[name] == item:

This is not likely to be what was intended.  You want
           if localmap[name] is item:
That can identify if one of the names happens to be bound to the SAME
object being examined.  Rather than one that happens to have the same
value.

Correction noted.  Thank you for that.  The distinction is important.
('==' vs 'is')


You also only showed it working on module globals. (For code at top-level, locals() returns the same as globals() )

You could also try it inside functions, where locals() really makes sense as a name. And you could try it in a nested function where there may very well be non-locals (eg. closure items) that aren't local or global.

But more interestingly, you could try it on items of a list, or members of a dictionary, where there's no name at all associated with the object.


--
DaveA
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to