Python 3如何存储局部变量?

时间:2017-08-16 10:00:46

标签: python-3.x

我想要实现的目标如下:

def foo(self):
    i = 4
    self.bar(__something_which_holds_foo_variables__)
    print(i) # prints 8
    print(j) # prints 2

def bar(self, vars):
    vars.j = 2
    vars.i = vars.i * vars.j

从另一种方法访问方法中的所有局部变量。

使用嵌套方法和nonlocal变量不是一种选择,因为foobar可能位于不同的模块中。 按名称传递变量也不是一种选择,因为bar()可能会产生其他变量,我希望稍后将其用作foo()中的本地变量。此外,可能bar()可能会使用foo()中的大量变量。

是否有可能实现这一点以及为什么这样的想法可能好或坏?

1 个答案:

答案 0 :(得分:0)

只需使用(针对不同的模块):

def bar():
    global modulename.i

或者如果它在课堂上那么:

def bar():
    global modulename.classname.i

这个想法可能更简单,因为你可以让bar(...)成为一个返回定义,让它以某种形式的元组返回新的i和j。