#python #function #return #return-value
#python #функция #Возврат #возвращаемое значение
Вопрос:
Я работаю над этим сегментом кода:
result=[]
def function(i,x,Tree,result):
if isinstance(Tree,ExNode):
return 0
a=Tree.tempatt
if x[a]<Tree.tempval:
return result.append(Tree.val), function(i,x,Tree.left,result)
else:
return result.append(Tree.val), function(i,x,Tree.right,result)
Здесь tempatt, tempval, val являются компонентами класса Tree .
Эта функция работает по желанию, но возвращает None . Однако в проводнике переменных я вижу результирующую переменную с желаемыми значениями, образующими список.
Комментарии:
1.
append
возвращает None .2. Да, спасибо, я это проверил, но какую еще структуру использовать, чтобы получить все эти значения, возвращаемые из рекурсивного цикла? Есть предложения?
3. Вы можете вернуться
result [Tree.val]
, если хотите вернуть объединенный список. Или вы могли бы добавитьresult
, а затем вернутьresult
.4. вместо строк ‘return’ напишите следующее: ‘result.append(Tree.val), function(i, x,Tree.left,result)’ а затем ‘return result’
5. @sadafShafi: большое спасибо. Я понимаю свою ошибку…. Ваш подход намного лучше
Ответ №1:
Напишите это так
result=[]
def function(i,x,Tree,result):
if isinstance(Tree,ExNode):
return 0
a=Tree.tempatt
if x[a]<Tree.tempval:
result.append(Tree.val), function(i,x,Tree.left,result)
return result
else:
result.append(Tree.val), function(i,x,Tree.right,result)
return result
В вашем случае вы возвращали не список, а функцию, которая возвращает none