gpt4 book ai didi

python - 理解 __call__ 和 list.sort(key)

转载 作者:太空狗 更新时间:2023-10-30 00:22:05 25 4
gpt4 key购买 nike

我试图理解以下代码:

>>> class DistanceFrom(object):
def __init__(self, origin):
self.origin = origin
def __call__(self, x):
return abs(x - self.origin)

>>> nums = [1, 37, 42, 101, 13, 9, -20]
>>> nums.sort(key=DistanceFrom(10))
>>> nums
[9, 13, 1, 37, -20, 42, 101]

谁能解释一下这是如何工作的?据我所知, __call__ 是调用 object() 时调用的内容 - 将对象作为函数调用。

我不明白的是如何nums.sort(key=DistanceFrom(10))。这是如何运作的?谁能解释一下这条线?

谢谢!

最佳答案

python 中的

__call__ 允许类像函数一样运行。您可以手动尝试:

>>> dis = DistanceFrom(10)
>>> print dis(10), dis(5), dis(0)
0 5 10
>>>

sort 的作用是为列表中的每个项目调用该函数,并将返回值用作排序键。在此示例中,您将返回一个列表,其中最接近 10 的项目排在最前面,距离较远的项目越靠后。

关于python - 理解 __call__ 和 list.sort(key),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4034455/

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