如何从先前的功能评估中访问对象的值?

时间:2019-05-02 13:50:36

标签: python

我有一个函数step(),它可以更改对象foo的值。从另一个文件中反复调用step以在不同的输入上运行。我想从上次迭代访问foo的值,以便可以在当前迭代中对其执行一些操作。我该如何实现?

def step(blob):
    (some code which accesses foo.pos for blob1)
    foo.pos = op(blob)

def calling_func():
    items = [blob1, blob2, blob3]
    for i in items:
        step(i) 

因此,当我将blob2传递给step()时,我想在传递pos时访问step中属性blob1的值。而且我想执行多次,直到调用step。另外,函数step()不返回任何内容。

1 个答案:

答案 0 :(得分:0)

您可以向step添加另一个参数,并将其用作堆栈以跟踪先前的值:

def step (blob, stack):
    stack.append (foo.pos)
    (some code which accesses foo.pos for blob1)
    foo.pos = op(blob)
    return stack

def calling_func():
    stack = []
    items = [blob1, blob2, blob3]
    for i in items:
        stack = step(i,stack) 

列表stack总是在最后添加最后一个元素,因此stack.pop()将为您提供上一次迭代的元素。