静态类型
Python是静态类型而没有是动态类型的,这象征着,正在顺序执行时,诠释器其实不晓得变量的类型。对C言语来讲,编译器正在申明变量的时分就晓得其类型了;对Python来讲,顺序执行时只晓得一个变量是某种Python工具。
关于上面的C代码
int a = 1; int b = 2; int c = a + b;
编译器始终晓得a以及b是整型,正在执行相加运算时,流程以下:
把<int> 1赋值给a
把<int> 2赋值给b
挪用binary_add<int, int>(a, b)
把后果赋值给c
完成一样性能的Python代码以下:
a = 1 b = 2 c = a + b
相干保举:《Python视频教程》
诠释器只晓得1以及2是工具,然而其实不晓得这个工具的类型。以是诠释器必需反省每一个变量的PyObject_HEAD能力晓得变量类型,而后执行对应的相加操作,最初要创立一个新的Python工具来保留前往值,大抵流程以下:
第一步,把1赋值给a
1.设置a->PyObject_HEAD->typecode为整型
2.设置a->val = 1
第二步,把2赋值给b
1.设置a->PyObject_HEAD->typecode为整型
2.设置b->val = 2
第三步,挪用binary_add<int, int>(a, b)
1.a->PyObject_HEAD猎取类型编码
2.a是一个整型;值为a->val
3.b->PyObject_HEAD猎取类型编码
4.b是一个整型,值为b->val
5.挪用binary_add<int, int>(a->val, b->val)
6.后果为整型,存正在result中
第四步,创立工具c
1.设c->PyObject_HEAD->typecode为整型
2.设置c->val为result
静态类型象征着任何操作城市触及更多的步骤。这是Python对数值操作比C言语慢的次要缘由
Python是诠释型言语
下面引见理解释型代码以及编译型代码的一个区分。智能的编译器能够提前预感并优化反复或没有需求的操作,这会带来功能的晋升。编译器是一个年夜的话题,这里没有会开展。
Python的工具模子会带来低效的内存拜访
以及C言语的整数比照时,咱们指出了Python多了额定一层信息。如今来看看数组的状况。正在Python中咱们能够应用规范库中提供的List工具;而正在C言语中咱们会应用基于缓冲区的数组。
最简略的NumPy数组是环抱C数据构建的Python工具,也就是说它有一个指向延续数据缓存区的指针。而Python的list具备指向延续的指针缓冲区的指针,这些指针每一个都指向一个Python工具,连系下面的例子,这些Python工具是一个整数工具。这个构造像上面这样
很容易看出,假如你在执行按程序逐渐实现数据的操作,numpy的内存规划比Python的内存规划更为高效,无论是存储老本仍是拜访的工夫老本。
以上就是为何python慢的具体内容,更多请存眷资源魔其它相干文章!
标签: Python python教程 python编程 python使用问题 慢
抱歉,评论功能暂时关闭!