Python具有许多构建功能,这极大地促进了我们的发展。这是一些构建的功能,以查看如何实现底层。
构建的功能位于Python/BitlinModule.c中。
腹肌
ABS的功能是采用整数的绝对值,或采用复数模具。
此功能称为pynumber_absolute。
我们以整数为例。它的nb_absoulte指向long_absolute。
由于Python3的整数存储在数组中,因此不会直接采用相反的数字,并且必须进行一些其他处理,但是可以通过数学上直接理解它为相反的数字。
全部
接收一个迭代对象。如果内部的元素都是正确的,请返回true;只要一个不正确,它就会返回错误。
因此,一切都是循环的一层,但是它是C的循环,因此它比我们编写的Python代码快。
任何
接收一个迭代对象。只要其中有一个元素,它就会返回真实。如果是假的,请返回false。
可召唤
确定是否可以调用对象。
逻辑非常简单。是否可以调用对象取决于是否实现其类型对象__call__。
dir
如果您没有收到任何对象,请返回当前的本地空间;否则,返回某个对象的所有属性的名称。
此功能称为pyobject_dir。
让我们看一下_dir_locals功能。
它相对简单,然后是_dir_object,它具有更多的代码,因此请勿在此处阅读。但是逻辑很简单,即调用对象,对获得的列表进行排序并返回的DIR方法。
ID
查看对象的内存地址,我们知道,尽管Python就是一切,但我们已经获得了指向对象的指针。例如,ID(名称)是查看变量名称的地址指向对象。不是名称本身吗?所以只要将指针变成整数并将其返回即可。
当地人和全球
两者被视为当前的本地空间和全球空间。显然,可以获得堆栈框架的f_locals和f_globals字段。
有
获取对象的哈希值。
和
接收一个迭代对象来计算它们的总和。但是在某个地方,您需要注意。
las,字符串还支持FA,为什么不呢?实际上,总和还可以接收第二个参数。如果我们不通过它,那就是0。
换句话说,总和([1,2,3])实际上是0 + 1 + 2 + 3;如此相似,sum([a““”,“ b”,“ c”]实际上是0 +“ a” +“ b” +“ c”;因此上述错误信息被添加到不支持类型的实例中int和str。
因此,总和按顺序添加第二个参数和第一个参数(迭代对象)中的元素,然后查看底层。
一小笔代码很多。我们还省略了一部分。
getAttr,setattr,delattr
这些很熟悉。让我们先看一下getAttr。它是获得对象的属性,也可以指定默认值。
同样,settttr是__setattr __,而delettr是__dlattr __。
有很多构建的功能。当然,这不仅是我们所说的。如果您有兴趣,可以输入源代码查看。
以上是该共享的所有内容。如果您想了解更多信息,请转到公共帐户:Python编程学习圈,每日干货共享
原始:https://juejin.cn/post/70963201666325125156