我相信你想要的东西可以通过检查连接到你的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