def c():
def a():
print dir()
def b():
pass
a()
c()
可能是一个非常简单的问题,但我似乎无法通过谷歌搜索找到答案。我有上面的代码,我想要一个方法来打印包含方法a和b的命名空间,即我希望它打印它所调用的点形式的命名空间。这可能吗?最好在Python 2.x
中答案 0 :(得分:6)
您可以使用标准Python库中的inspect
模块:
import inspect
def c():
def a():
frame = inspect.currentframe()
print frame.f_back.f_locals
def b():
pass
a()
c()
但frames
应在使用后删除,请参阅note。
回答评论。
限制学生检查功能的可能方法:
import sys
sys.modules['inspect'] = None
sys._getframe = None
答案 1 :(得分:2)
我会像locals()那样:
def c():
def a(locals_):
print locals_
def b():
pass
a( locals() )
c()