cmp基于评估方法返回两个不同的结果

时间:2016-02-23 17:43:31

标签: python functional-programming built-in

所以我试图让一些练习在python中传递函数和关键字作为参数,我得到了一个奇怪的结果。我有以下代码:

def myeval(f, *args, **kwargs):
    return f(*args, **kwargs)

def tester(x = 0, y = 0):
    return cmp(x,y)

然后当我做一些测试时,会发生奇怪的事情:

>>> cmp(1,10)
    -1
>>> tester(1,10)
    -1
>>> tester(x=1, y=10)
    -1

预期。但是:

>>> myeval(tester, {"x":1, "y":10})
    1

为什么会有所不同? myeval也不应该返回-1吗?评估的幕后是否有一些奇怪的事情发生?

1 个答案:

答案 0 :(得分:4)

您需要 AnswersByPartner ================================================== Name | "What is 3 x 23?" | "Your age?" ================================================== "Jason" | 69 | 26 -------------------------------------------------- "Subhasish" | NULL | 45

由于myeval(tester, **{"x":1, "y":10})导致myeval(tester, {"x":1, "y":10})args而非[{"x":1, "y":10}]kwargs

或者将您的功能定义为:

{"x":1, "y":10}

然后将其称为:

def myeval(f, args, kwargs):

术语明智的是myeval(tester, [], {"x":1, "y":10}) 而不是apply