当一个python函数接受调用而不定义参数时会发生什么?

时间:2016-06-13 12:27:15

标签: python function sorting

L=[5,10,4,2,8,7]
def compare(a,b):
    return cmp(b,a)

L.sort(compare)
print (L[-2])
L.sort()
print (L[2])

当运行此代码时,为什么不抛出异常,因为在sort函数中调用的函数compare没有给出两个参数? 当代码运行时,它将输出作为,

4
5

2 个答案:

答案 0 :(得分:1)

您没有直接调用该功能

您要将sort函数传递给将用作比较器的函数的'指针'或'引用'

如果您需要更多调试信息,请添加一行以打印所比较的内容,如下所示

L=[5,10,4,2,8,7]
def compare(a,b):
    print 'comparing ',a,b
    return cmp(b,a)

L.sort(compare)

您还会注意到通话次数取决于L dis-order

有几种方法可以解决排序数组的问题 其中一些是合并排序,二进制排序和其他

这是python列表对象

源代码的link

答案 1 :(得分:0)

你没有在L.sort中调用compare(比较)。您只是传递对将通过sort内部调用的函数的引用。

你不需要任何其他论据。请记住,为了调用你使用()的函数,所以如果你实际调用它,你会写出L.sort(compare())