TypeError: 'NoneType' object is not iterable when overwriting old value
TypeError: 'NoneType' object is not iterable when overwriting old value
这是对我的程序的简化,我很难理解错误发生的原因以及解决方法。
def test(n=0):
a = [];
b = [];
if n == 0:
return a,b
else:
a.append(1);
b.append(2);
for i in range(0,2):
x,y = test(i)
x 和 y 在每次迭代中必须具有不同的值,但是由于函数 returns None 在某一时刻后来想要覆盖它,它会因错误 [= =18=] - 尽管使用某种 try - catch 机制,是否有一个干净的解决方案?
下面的代码使程序运行,但感觉像是误用了早期设计错误的try-catch机制。
def test(n=0):
a = [];
b = [];
if n == 0:
return a,b
else:
a.append(1);
b.append(2);
for i in range(0,2):
try:
x,y = test(i)
except TypeError:
continue;
在这种情况下,您的功能测试没有 return 功能自动 return None,而在 return 上您正试图将 returned [0] 到 x 和 returned[1] 到 y。 returned 是不可迭代的 None。
正确代码:
def test(n=0):
a = [];
b = [];
if n == 0:
return a,b
else:
a.append(1);
b.append(2);
return a,b
for i in range(0,2):
x,y = test(i)
不清楚你想对我做什么。
1) a 和 b 是本地数组,因此它们永远不会包含超过 1 个元素。
这是故意的吗?
2) 然后你的 func 测试在 else 部分没有 return 所以它会 return None。
您尝试通过迭代 None 将 None 放入 x 和 y 中,这是无法完成的,并且
给出错误
这是对我的程序的简化,我很难理解错误发生的原因以及解决方法。
def test(n=0):
a = [];
b = [];
if n == 0:
return a,b
else:
a.append(1);
b.append(2);
for i in range(0,2):
x,y = test(i)
x 和 y 在每次迭代中必须具有不同的值,但是由于函数 returns None 在某一时刻后来想要覆盖它,它会因错误 [= =18=] - 尽管使用某种 try - catch 机制,是否有一个干净的解决方案?
下面的代码使程序运行,但感觉像是误用了早期设计错误的try-catch机制。
def test(n=0):
a = [];
b = [];
if n == 0:
return a,b
else:
a.append(1);
b.append(2);
for i in range(0,2):
try:
x,y = test(i)
except TypeError:
continue;
在这种情况下,您的功能测试没有 return 功能自动 return None,而在 return 上您正试图将 returned [0] 到 x 和 returned[1] 到 y。 returned 是不可迭代的 None。
正确代码:
def test(n=0):
a = [];
b = [];
if n == 0:
return a,b
else:
a.append(1);
b.append(2);
return a,b
for i in range(0,2):
x,y = test(i)
不清楚你想对我做什么。
1) a 和 b 是本地数组,因此它们永远不会包含超过 1 个元素。 这是故意的吗?
2) 然后你的 func 测试在 else 部分没有 return 所以它会 return None。 您尝试通过迭代 None 将 None 放入 x 和 y 中,这是无法完成的,并且 给出错误