How to get the original variable name of variable passed to a function

EDIT: To make it clear, I don’t recommend using this AT ALL, it will break, it’s a mess, it won’t help you in any way, but it’s doable for entertainment/education purposes.

You can hack around with the inspect module, I don’t recommend that, but you can do it…

import inspect

def foo(a, f, b):
    frame = inspect.currentframe()
    frame = inspect.getouterframes(frame)[1]
    string = inspect.getframeinfo(frame[0]).code_context[0].strip()
    args = string[string.find('(') + 1:-1].split(',')
    
    names = []
    for i in args:
        if i.find('=') != -1:
            names.append(i.split('=')[1].strip())
        
        else:
            names.append(i)
    
    print names

def main():
    e = 1
    c = 2
    foo(e, 1000, b = c)

main()

Output:

['e', '1000', 'c']

Leave a Comment