gpt4 book ai didi

python - 你如何研究 python 的内置方法的实现?

转载 作者:太空狗 更新时间:2023-10-29 21:18:55 24 4
gpt4 key购买 nike

我目前正在学习基础 compsci 类(class)。我们经常使用 Python 的 in。我很好奇它是如何实现的,为 in 提供支持的代码是什么样的。

我能想到实现这样的事情会如何工作,但我在交了几个家庭作业后了解到,我做事的方式通常非常糟糕且效率低下.. 所以我想开始调查“好”代码。

最佳答案

有关内置函数、类型和运算符等的事情是它们不是在 Python 中实现的。相反,它们是用 C 实现的,C 是一种更加痛苦和冗长的编程语言,并不总是能很好地转换为 Python(通常是因为 Python 中的其他方式更容易。)

话虽如此,您可以通过他们的 public source repository 在线研究 Python 的所有实现。 .

in 的实现是分散的——每种类型都有一个实现,加上一个更通用的调用特定类型实现的实现(稍后会详细介绍)。例如,对于列表,我们会寻找列表的实现。在 Python 源代码树中,所有内置对象的源代码都在 Objects 目录中。在该目录中,您会找到 listobject.c ,其中包含列表对象及其所有方法的实现。

在回答时在存储库中,如果您查看 line 393您会找到 in 运算符的实现(也称为 __contains__ 方法,它解释了函数的名称)。它相当简单,只需遍历列表的所有元素,直到找到该元素,或者没有更多元素,然后返回搜索结果。 :)

如果有帮助,在 Python 中,惯用的写法是:

def __contains__(self, obj):
for item in self:
if item == obj:
return True

return False

我之前说过有一个更通用的实现。这可以在 PySequence_Contains 的实现中看到在 abstract.c 中。它尝试调用特定类型的版本,如果失败,则求助于常规迭代。当您用 C 语言(使用 Python C-API)编写该循环时,该循环就是常规 Python for 循环的样子。

关于python - 你如何研究 python 的内置方法的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10260814/

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