是否可以获取传递给函数的变量的原始变量名?例如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()..并让函数根据传递给它的变量的名称生成文件名。我想如果不可能的话,我只需要每次将变量和变量名作为字符串传递。
3 回答

呼如林
TA贡献1798条经验 获得超3个赞
看起来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'
道德:别这么做。
添加回答
举报
0/150
提交
取消