2017-04-04 84 views
-1

这是对我的程序的简化,我很难理解错误发生的原因以及解决方案。TypeError:覆盖旧值时'NoneType'对象不可迭代

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必须在每次迭代有不同的值,但由于功能在一个点返回无再后来就是了overvwrite它,它会得到崩溃并出现错误“类型错误” - 有没有干净的解决方案,尽管使用某种尝试抓住machnism?

下面的代码让程序运行,但它感觉像滥用了早期设计错误的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; 
+0

'test'不返回任何 –

+0

SRY这是一个复制和粘贴错误 – Kev1n91

+0

此外,你应该放下半错误冒号,它们在您的示例中不起任何作用。在Python中,当您想要在同一行分隔多个指令时使用它们。 – Qrom

回答

0

你的功能测试在这种情况下,功能不归路自动返回None,而在回报,你正试图把[0]返回x和返回[1]为y。返回的地方是无法迭代的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) 
0

目前还不清楚是什么你想对我做什么。

1)a和b是局部数组,因此它们永远不会包含超过1个元素。 这是打算?

2)那么你的func测试在else部分没有返回,所以它将返回None。 您尝试通过迭代无投入无成x和y这不能做,并 给

+0

谢谢你的答案,有点了解,这是一个愚蠢的错误, 2)到1) - 这只是一个示例程序,因为这个原始程序太复杂了。我只是想删除这个问题,但是因为已经有一些问题,所以我不能这么做...... – Kev1n91

相关问题