Python获取另一个函数的本地化并将它们设置为全局

时间:2017-09-23 20:30:12

标签: python python-3.x function variables

调用它之后是否可以从另一个函数中获取局部变量并将它们设置为全局?

让我说我有类似

的东西
@setGlobals
def setup():
     width = 600
     height = 400

我想获取这些变量并将其设置为全局而不使用global ...

我知道我可以使用像globals().update(locals())这样的东西 在函数内部

或者将它放到一个对象上并使用self.width and self.height

但是有没有办法拥有像

这样的功能
def setGlobals(func):
     def weapper(*args, **kwargs):
           func(...)
           #globals().update(func.locals())


# returns {'width':600, 'height':400}

由于

1 个答案:

答案 0 :(得分:3)

这种能力从根本上说是不合理的。想象一下:

def f(x):
  y=x*2

[f(1),f(2)]
getLocals(f)   # is y 2 or 4?

局部变量值是函数的特定调用的一个方面,而不是函数本身。