2

假设我有以下代码:

def function(k):
    # do something here

d = { 0: 'a', 1: 'b', 2: 'c' }

function(d[0])

是否有可能function找出 中的其他键是d什么?例如有没有这样的事情:

def function(k):
    print k.__parent__.keys()

我认为没有这样的功能(因为这将是一个重大的安全问题)。但是,我对技术实现知之甚少,无法确定。

编辑:动机是如果 Python 中的一切都是一个对象,是否有可能找到绑定到它的其他对象,在这种情况下是父字典。

4

1 回答 1

5

不,没有。Python 中的值不会跟踪它们的来源,也不会相互“绑定”。容器可以引用其他值,但由于可以从多个位置引用任何值,因此跟踪反向引用没有意义。

function()s 的角度来看,以下两个调用之间绝对没有区别:

function(d[0])
function('a')

在这两种情况下,k函数中都绑定了一个 python 字符串值,'a'.

如果您需要函数中的更多上下文,则需要显式传递它:

def function(key, mapping):
    k = mapping[key]

function(0, d)

现在你也有了字典本身。

于 2013-05-15T16:09:31.390 回答