Getting the name of a variable which was used as a functionparameter.

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Ravi Kotecha

    Getting the name of a variable which was used as a functionparameter.

    Hi guys,

    I thought this was pretty cool and since I spent 30 mins or so
    goggling before giving up and figuring out myself I thought I'd share
    it with you.
    >>def a(a):
    .... for k,v in sys._getframe(1 ).f_locals.item s():
    .... if id(v) == id(a):
    .... print k
    ....
    >>hello = 123
    >>a(hello)
    hello

    ## pretty cool.


    It's totally useless but I wanted to do it for logging purposes. It
    will still return weird results if you have two labels pointing to the
    same object but I'm not sure how to get around that, any ideas?

    Regards,
    Ravi Kotecha
  • Marc 'BlackJack' Rintsch

    #2
    Re: Getting the name of a variable which was used as a functionparamet er.

    On Mon, 21 Jul 2008 09:01:10 -0700, Ravi Kotecha wrote:
    I thought this was pretty cool and since I spent 30 mins or so
    goggling before giving up and figuring out myself I thought I'd share
    it with you.
    >
    >>>def a(a):
    ... for k,v in sys._getframe(1 ).f_locals.item s():
    ... if id(v) == id(a):
    ... print k
    ...
    >
    >>>hello = 123
    >
    >>>a(hello)
    hello
    >
    ## pretty cool.
    Or ugly hack. Beauty lies in the eye of the beer holder…
    It's totally useless but I wanted to do it for logging purposes.
    Don't use such things in production code, please.

    Ciao,
    Marc 'BlackJack' Rintsch

    Comment

    • Ravi Kotecha

      #3
      Re: Getting the name of a variable which was used as a functionparamet er.

      Of course I wouldn't, it is a total hack, mostly useless but fun. I
      tried to do it after someone in #python efnet said it was impossible!

      On Jul 21, 9:56 pm, Marc 'BlackJack' Rintsch <bj_...@gmx.net wrote:
      On Mon, 21 Jul 2008 09:01:10 -0700, Ravi Kotecha wrote:
      I thought this was pretty cool and since I spent 30 mins or so
      goggling before giving up and figuring out myself I thought I'd share
      it with you.
      >
      >>def a(a):
      ...     for k,v in sys._getframe(1 ).f_locals.item s():
      ...         if id(v) == id(a):
      ...             print k
      ...
      >
      >>hello = 123
      >
      >>a(hello)
      hello
      >
      ## pretty cool.
      >
      Or ugly hack.  Beauty lies in the eye of the beer holder…
      >
      It's totally useless but I wanted to do it for logging purposes.
      >
      Don't use such things in production code, please.
      >
      Ciao,
              Marc 'BlackJack' Rintsch

      Comment

      • Fredrik Lundh

        #4
        Re: Getting the name of a variable which was used as a functionparamet er.

        Ravi Kotecha wrote:
        Of course I wouldn't, it is a total hack, mostly useless but fun. I
        tried to do it after someone in #python efnet said it was impossible!
        your function only finds *some* name (if it finds a name at all), not
        *the* name, so you haven't really proven that someone wrong yet.

        you can get a lot closer by using more radical approaches, but I don't
        think it's possible to do this in a fully robust way, at least not from
        the Python level.

        </F>

        Comment

        Working...