我不太了解python模块中导入和函数定义 可见性的位置。 这是我案例的简化:
from scapy.all import *
def getA():
return 0
def getB():
return getA() + 1
def getC():
code.interact(local=locals())
return 3
def main():
print getA()
print getB()
print getC()
exit()
if __name__ == '__main__':
main()
现在,一切顺利,直到我到达功能getC
并出现命令提示符,很多我应该看到缺少。
为什么会这样?我错了什么?
答案 0 :(得分:19)
答案 1 :(得分:7)
您感到困惑locals()
和globals()
。在函数范围中,locals()
列出了函数本身中定义的仅名称。
改为使用globals()
。
>>> bar = 'baz'
>>> def foo():
... spam ='eggs'
... print locals()
...
>>> foo()
{'spam': 'eggs'}
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', 'foo': <function foo at 0x108a027d0>, '__doc__': None, '__package__': None}