我有一个修改列表的函数,但它不会返回任何内容。这是一个很长的功能,但举一个例子,以下是同样的问题。为什么不归还任何东西?
def inventedfunction(list1):
list2=list1[:-1]
if len(list2)!=1:
inventedfunction(list2)
else:
return list2
答案 0 :(得分:2)
将return inventedfunction(list2)
替换为def inventedfunction(list1):
list2=list1[:-1]
if len(list2)!=1:
return inventedfunction(list2)
else:
return list2
。如果你只是在没有return语句的情况下调用它,结果将被抛出。
工作代码:
angular.module('app').directive('darkroom', function() {
return {
restrict: 'A',
scope: {},
link: function(scope, elem, attrs) {
new Darkroom('#'+attrs.id, {
// Size options
minWidth: 100,
minHeight: 100,
maxWidth: 350,
maxHeight: 400,
ratio: 4/3,
backgroundColor: '#F0F8FF',
// Plugins options
plugins: {
save: false,
crop: {
quickCropKey: 67, //key "c"
//minHeight: 50,
//minWidth: 50,
//ratio: 4/3
}
},
// Post initialize script
initialize: function() {
var cropPlugin = this.plugins.crop;
cropPlugin.requireFocus();
}
});
}
}
});
答案 1 :(得分:0)
你没有说出这个功能应该做什么,所以我假设"发明了功能"意味着"倒置功能"。即使这不正确,这个想法也是一样的。如果情况不是这样,或者您不明白,请回复更多信息。
你没有收到任何回报,如果len(list2)!= 1,你也不会返回任何内容(无)。你还必须创建第二个列表来保存从中删除的数字发送到函数的列表,并根据代码的结构方式返回更新的列表。
def inventedfunction(list1, new_list=[]):
## at the least add print statements so you know what is happening
print new_list, "----->", list1
list2=list1[:-1]
new_list.append(list1[-1]) ## append item removed from list1 --> list2
if len(list2):
new_list, list2=inventedfunction(list2)
return new_list, list2 ## both updated lists returned
print inventedfunction([1, 2, 3, 4, 5])