是否可以獲取傳遞給函數(shù)的變量的原始變量名?例如foobar = "foo"def func(var):
print var.origname以便:func(foobar)返回:>>foobar編輯:我只想做一個像這樣的函數(shù):def log(soup):
f = open(varname+'.html', 'w')
print >>f, soup.prettify()
f.close()..并讓函數(shù)根據(jù)傳遞給它的變量的名稱生成文件名。我想如果不可能的話,我只需要每次將變量和變量名作為字符串傳遞。
3 回答

呼如林
TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個贊
看起來Ivo擊敗了我inspect
,但這是另一個實(shí)現(xiàn):
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'
當(dāng)然,它可以被愚弄:
def baz(): lcl = 'hi' x='hi' return foo(lcl)baz()# 'x'
道德:別這么做。
添加回答
舉報
0/150
提交
取消