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 の観点からは、次の 2 つの呼び出しにまったく違いはありません。

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

どちらの場合も、k関数内で python 文字列値'a'.

関数でさらにコンテキストが必要な場合は、明示的に渡す必要があります。

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

function(0, d)

これで、辞書自体も取得できました。

于 2013-05-15T16:09:31.390 に答える