【问题标题】:python introspection - get name of variable passed to function [duplicate]python introspection - 获取传递给函数的变量名称[重复]
【发布时间】:2015-11-04 14:46:23
【问题描述】:

我希望能够访问传递给函数的变量的名称,例如

def f(x):
    '''Returns name of list/dict variable passed to f'''
    return magic(x)

>>a = [1,2,3]
>>print( f(a) )
'a'
>>print( f(2) )
None

我怀疑使用 Python 内省可以做到这一点,但我不够了解检查模块。 (注意,我知道需要像 magic() 这样的函数是有问题的,但 正是我想要的。)

【问题讨论】:

  • “但这是我想要的” - 为什么?你到底想用这个实现什么?为什么我必须为你谷歌?
  • 现在我看到这是一个重复的问题,我将我对该问题的赞成票改为反对票。

标签: python introspection


【解决方案1】:

实际上,这是不可能的。在 Python 中,名称和值是完全分开的。在f 内部,您可以访问x,但不可能找出其他名称还有哪些其他功能可能已经赋予了那个价值。

把名字想象成C语言中的指针。如果你有一个指针,你可以找出它指向的对象。但是如果你有这个对象,你就无法找出指向它的指针。

【讨论】:

  • 你可能不应该,但这是可能的。
  • @jonrsharpe - 怎么样?即使有堆栈恶作剧......哦,等等。也许有可能,如果您随后通过引用相等将每个调用堆栈的名称与x 进行比较。呃,那将是多么丑陋的黑客行为。
  • 是的,它……不漂亮。
  • @jonsharpe +1 提供正确答案。 -1 表示没有耐心或礼貌。
猜你喜欢
  • 2015-12-31
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 2010-11-03
  • 2012-04-13
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
相关资源
最近更新 更多