为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥6287543 2019-09-26 10:56:05
是否可以获取传递给函数的变量的原始变量名?例如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 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-09-26
?
呼如林

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'

道德:别这么做。


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 342 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信