首页 > 解决方案 > 如何使用另一个函数编辑函数的局部变量?

问题描述

我在函数 ( ) 中声明了一个列表f2,我想使用另一个函数 ( f1) 附加到该列表。鉴于我无法将参数传递给的约束,是否有可能实现这一点f1?我正在寻找指向f2从中f1调用的“父”函数的名称空间的东西。

我不想在mylist外部声明f2,也不想mylist全局化。原因是我要f2多次调用,我不想mylist在每个实例中都附加到相同的。

def f1():
    """
    Constraint: this function cannot take any arguments!
    """
    global mylist  # Clearly the wrong thing to do
    mylist.append(1)


def f2():
    mylist = []  # Must be declared in f2
    print(mylist)
    f1()  # Call function which appends 1 to mylist
    print(mylist)

预期行为:

>>> f2()
[]
[1]

我查看了之前提出的一堆类似问题,我的印象是这是不可能的。但我想我会试试运气,看看是否有人知道。

我希望在 python2.7 中实现这一点,但也欢迎针对 python3 提出具体建议。

标签: python

解决方案


def f1():
    mylist.append(1)

def f2():
    global mylist
    mylist=[]  
    print(mylist)
    f1()  # Call function which appends 1 to mylist
    print(mylist)

f2()

推荐阅读