以前的瞬时功能不会在第二次呼叫时结束

时间:2012-03-17 21:58:05

标签: python

我有一种奇怪的行为,我似乎无法识别。我可以尝试这样总结一下:

    def custom_function(input_list):
        output_sum = 0
        for number in input_list:
            output_sum += number
        return output_sum

    tmp_list = [0, 12, 129]
    tmp_list2 = [19, 0, 18]

    print tmp_list
    print custom_function(tmp_list)

    print tmp_list2
    print custom_function(tmp_list)

在这种情况下,请考虑custom_function更复杂。我想知道它可能来自哪种东西。如果您需要更多见解,我希望更详细地描述custom_function

输出将如下所示,并且脚本将继续运行而不给出任何答案,而custom_function的第一次迭代是瞬时的。

    [0, 12, 129]
    141
    [19, 0, 18]

你们有没有想过这种问题可能来自哪里?当我杀死脚本时,Trace Back总是指示我一个不同的调用,好像最后一个函数只需要2天才能执行。

1 个答案:

答案 0 :(得分:1)

您的代码中有印刷错误。第二个打印操作员打印tmp_list2,但要通过tmp_list传递功能。

所以,改变

print custom_function(tmp_list)

print custom_function(tmp_list2)

如果要在函数中使用input_list进行任何操作(添加/删除项目),请尝试在input_list [:]的副本上进行“for”循环,而不是input_list本身。所以你的功能应该是这样的:

def custom_function(input_list):
    output_sum = 0
    for number in input_list[:]:
        output_sum += number
    return output_sum

它对你当前的函数没有用,因为没有对input_list的内容进行操作,但你已经提到你的实际函数更复杂了。