我相信你想要的東西可以通過檢查連接到你的function
對象的__code__
對象來實現。例如:
在一個名爲funcs.py
:現在
external_object = "external object"
def f():
print(external_object)
nested = "nested"
def g():
print(nested)
return g
,在解釋對話:
鍵入 「help」, 「版權」, 「信用」 或 「許可」 的詳細信息。
>>> import funcs
>>> funcs.f.__code__.co_names
('print', 'external_object')
>>>
或者,如果你想要的局部變量:
>>> funcs.f.__code__.co_cellvars
('nested',)
您也可以訪問其他的東西,比如自由變量。請注意,nested
是在封閉的g
自由變量:
>>> g = funcs.f()
external object
>>> g.__code__.co_names
('print',)
>>> g.__code__.co_freevars
('nested',)
>>>
瞭解更多有關可用屬性here。我會注意到,它可能是不依賴於這個偉大的想法,因爲在文檔的警告,
它們的定義可能與解釋, 的未來版本中改變,但他們在這裏提到的完整性。
這可能是我自己缺乏理解,但是這是什麼意思來記憶一個函數?什麼是外部注入依賴?有外部圖書館嗎? – mitoRibo
此外,你有一個*功能*不是一種方法。 –
感謝您的澄清。仍然在我腦海中的上下文切換階段:P – Akshay