在except函數中包含函數時會出現什麼問題? 在我的情況,我有以下功能:return python內部除外
def inventedfunction(list1):
print "initial list %r" %list1
SOMETHING THAT CREATES list2 based on list1
try:
list2[1]
print "inside try %r" %list2
inventedfunction(list2)
except:
print "inside except %r" %list2
return list2
運行inventedfunction(somelist)後,似乎一切工作:
initial list [3, 562, 7, 2, 7, 2, 3, 62, 6]
inside try [[3, 562], [2, 7], [2, 7], [3, 62], [6]]
initial list [[3, 562], [2, 7], [2, 7], [3, 62], [6]]
inside try [[2, 3, 7, 562], [2, 3, 7, 62], [6]]
initial list [[2, 3, 7, 562], [2, 3, 7, 62], [6]]
inside try [[2, 2, 3, 3, 7, 7, 62, 562], [6]]
initial list [[2, 2, 3, 3, 7, 7, 62, 562], [6]]
inside except [[2, 2, 3, 3, 6, 7, 7, 62, 562]]
但它不返回任何東西。如果我將返回列表2包含在除返回列表外的其他列表之外,[[3,562],[2,7],[2,7],[3,62],[6]],但不返回[[2,2,3,3 ,6,7,7,62,562]]這是我想要的。
另外,如果我改變了代碼如下:
if len(list2)!=1:
inventedfunction(list2)
else:
return list2
有一個在功能上沒有回報。
另一個簡單的例子,也不會返回任何東西:
def inventedfunction(list1):
list2=list1[:-1]
if len(list2)!=1:
inventedfunction(list2)
else:
return list2
inventedfunction()可能會調用自身,因此是遞歸的。什麼應該是它的遞歸的終止條件,並且總是出現異常?因爲它僅在異常情況下返回某些內容。 –
我試圖在列表2中只有一個子列表時結束遞歸,這就是爲什麼我在列表中包含list2 [1]的原因。 – user2246905