如何让此代码生效?
def f1():
def f2():
print g
g = 1
print g
g = 0
print g
f2()
print g
f1()
预期结果当然是0,0,1,1,逐行打印
答案 0 :(得分:2)
如果您不想使用全局变量:
def f1():
def f2():
print g[0]
g[0] = 1
print g[0]
g =[0]
print g[0]
f2()
print g[0]
f1()
这是为了解决无法重新分配属于外部范围的变量的问题。当你重新分配它时,你基本上在嵌套函数中创建一个新变量。要解决这个问题,请将值包装在列表中,然后重新分配列表的元素。
这是python 2中的一个问题.Python 3通过使用非本地语句修复它:
http://technotroph.wordpress.com/2012/10/01/python-closures-and-the-python-2-7-nonlocal-solution/
答案 1 :(得分:0)
这个怎么样:
def f1():
def f2():
global g
print g
g = 1
print g
global g
g = 0
print g
f2()
print g
f1()
输出:
0
0
1
1