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问题;为什么需要知道范围中的所有变量?