Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python';s代码。交互?_Python_Namespaces_Python Nonlocal - Fatal编程技术网

如何使用Python';s代码。交互?

如何使用Python';s代码。交互?,python,namespaces,python-nonlocal,Python,Namespaces,Python Nonlocal,例如,在Python(3.6版)中执行code.interact时,如何访问完整的名称空间(包括非本地名称) 通常建议采用以下解决方案或类似方案: code.interact(local={**globals(),**locals()}) 但是,它不提供非局部名称(从内部函数看到的外部函数的名称)。事实上,就连内置函数dir()在这方面的表现也很有趣: def f(): x = 1 def g(): print('g:', dir()) # pri

例如,在Python(3.6版)中执行code.interact时,如何访问完整的名称空间(包括非本地名称)

通常建议采用以下解决方案或类似方案:

code.interact(local={**globals(),**locals()})

但是,它不提供非局部名称(从内部函数看到的外部函数的名称)。事实上,就连内置函数dir()在这方面的表现也很有趣:

def f():
    x = 1
    def g():
        print('g:', dir())
        # print(x)
    g()
    print('f:', dir())
在上面的代码中,dir()看不到名称x,但如果打印(x)行未注释,则名称x可见。有趣的是,dir()的语义应该取决于它之后发生了什么?!(这是一个优化还是一个bug还是什么?)那么有没有一种方法可以在不需要首先访问所有非本地名称的情况下获取它们


我宁愿不必编写自己的函数(使用inspect或其他任何工具)。

我也希望得到答案。特别是,有没有一种方法可以像捕获
local()
global()。特别是,是否有一种捕获
非本地
名称空间的方法,类似于捕获
local()
global()
名称空间的方法?