gpt4 book ai didi

python - cmp 根据评估方法返回两个不同的结果

转载 作者:太空宇宙 更新时间:2023-11-04 10:15:34 25 4
gpt4 key购买 nike

所以我尝试练习在 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 吗?评估的幕后是否发生了一些奇怪的事情?

最佳答案

你需要做 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 而不是eval

关于python - cmp 根据评估方法返回两个不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35584523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com