Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.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 如何获得作用域中的所有可用变量?_Python - Fatal编程技术网

Python 如何获得作用域中的所有可用变量?

Python 如何获得作用域中的所有可用变量?,python,Python,如果我有以下代码: var_global = "global" def outer() : var_outer = "outer" def inner() : var_inner = "inner" # How to get here all variables available (it should contain # var_inner, var_outer, var_global)? print("inner

如果我有以下代码:

var_global = "global"
def outer() :
    var_outer = "outer"
    def inner() :
        var_inner = "inner"
        # How to get here all variables available (it should contain
        # var_inner, var_outer, var_global)?
        print("inner", locals(), globals())
    return inner
我跑:

outer()()

我想在
print
位置获取所有变量。这应该包括
var_outer
。但是无论是
locals
还是
globals
都不能提供它。

var\u outer可以通过非本地访问var\u inner

var_global = "global"
def outer():
    var_outer = "outer"
    def inner():
        var_inner = "inner"
        print("inner", locals(), globals())
        nonlocal var_outer
        print(var_outer)
    return inner

outer()()
将打印:

inner {'var_outer': 'outer', 'var_inner': 'inner'} [...]

外部变量可以通过非本地访问内部变量

var_global = "global"
def outer():
    var_outer = "outer"
    def inner():
        var_inner = "inner"
        print("inner", locals(), globals())
        nonlocal var_outer
        print(var_outer)
    return inner

outer()()
将打印:

inner {'var_outer': 'outer', 'var_inner': 'inner'} [...]

只有当
internal
实际包含对
var\u-outer
变量的访问时,才会触发为
internal
提供访问
var\u-outer
权限的闭包变量机制。否则,
var\u-outer
不会被保存,并且任何内省都不会允许您访问它。

只有当
internal
实际包含对
var\u-outer
变量的访问时,才会触发为
internal
提供访问
var\u-outer
权限的闭包变量机制。否则,
var\u-outer
不会被保存,并且任何内省都不会授予您访问它的权限。

var\u-outer
内部()中确实不可用。使一个变量在嵌套函数中可用需要变量从一开始就以不同的方式存储;Python没有这样做,因为没有从嵌套函数中引用变量。如果您确实插入了这样一个引用(例如裸语句
var\u outer
),它将显示在
locals()

var\u outer
的输出中,而
internal()
中确实不可用。使一个变量在嵌套函数中可用需要变量从一开始就以不同的方式存储;Python没有这样做,因为没有从嵌套函数中引用变量。如果您确实插入了这样一个引用(例如裸语句
var_outer
),它将显示在
locals()

的输出中,听起来像是XY问题;为什么需要知道范围内的所有变量?听起来像是XY问题;为什么需要知道范围中的所有变量?