如何获取传递给函数的变量的原始变量名

是否可以获取传递给函数的变量的原始变量名?例如

foobar = "foo"def func(var):
    print var.origname

以便:

func(foobar)

返回:

>>foobar

编辑:

我只想做一个像这样的函数:

def log(soup):
    f = open(varname+'.html', 'w')
    print >>f, soup.prettify()
    f.close()

..并让函数根据传递给它的变量的名称生成文件名。

我想如果不可能的话,我只需要每次将变量和变量名作为字符串传递。


慕哥6287543
浏览 343回答 3
3回答

阿晨1998

你不能 在传递给函数之前先对其求值。您所要做的就是将它作为字符串传递。

呼如林

看起来Ivo击败了我inspect,但这是另一个实现:import inspectdef varName(var):     lcls = inspect.stack()[2][0].f_locals    for name in lcls:         if id(var) == id(lcls[name]):             return name    return Nonedef foo(x=None):     lcl='not me'     return varName(x)def bar():     lcl = 'hi'     return foo(lcl)bar()# 'lcl'当然,它可以被愚弄:def baz():     lcl = 'hi'     x='hi'     return foo(lcl)baz()# 'x'道德:别这么做。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python