Python,从封闭块声明变量

时间:2015-05-05 22:40:57

标签: python

像以下内容的Python习语是什么:

def F():
    waitfor = 5
    def f2(x):
        global2you waitfor # <<<<<<< SOMETHING FROM ENCLOSING_BLOCKS
        waitfor += 1
        return waitfor
    print "waitfor, before", waitfor, "and after", f2("ABCD")
F()

我不愿意使用global waitfor,因为我不希望与其他开发人员的变量名称发生任何名称冲突。我坚持使用Python 2.6.9。感谢。

1 个答案:

答案 0 :(得分:3)

在Python 3中,您可以使用nonlocal关键字,它可以彻底解决此问题。

然而,在Python 2中,你必须通过将waitfor转换为一个元素的列表来诉诸于穷人的参考&#34;

def F():
    waitfor = [5]
    def f2(x):
        waitfor[0] += 1
        return waitfor[0]
    print "waitfor, before", waitfor[0], "and after", f2("ABCD")