从后台看python--为什么说python是慢的
python越来越作为一种科学技术研究的语言越来越流行,可是我们经常听到一个问题,python是慢的。那么我们从后台分析一下,为什么python是慢的。
python是一种动态类型,解释型语言,它的值都是存储在分散的对象中,而不是紧密的缓存之中。
1.python是动态类型语言
这意味着编译器在程序执行之前并不知道变量定义的类型。C定义变量和Python定义变量的方式的区别:
对于C,编译器通过定义知道变量的类型;然而对于python中的变量,当你知道变量的类型的时候已经是程序执行的时候了。
我们分析一小段代码分别在python和C中执行的具体区别:
在C中,如果你写如下代码:
int a = 1;
int b = 2;
int c = a + b;
1.分配一个类型1给a
2.分配一个类型2给b
3.调用一个二进制加法
a = 1
b = 2
c = a + b
1.分配1给a
- 设置一个对象,然后将它的类型设置为整数
将它的值设为1
2.分配2给b设置一个对象,然后将它的类型设置为整数
将它的值设为2
3.调用一个二进制加法(a,b)寻找一个类型在对象中
- a是一个整数,它的值是a
- 寻找一个类型在对象中
- b是一个整数,它的值是b
- 调用一个二进制加法
返回结果,结果是一个整数
4.产生一个对象c将一个对象的类型设置为整数
- 将它的值分配给结果
动态类型意味着每一步操作需要更多的步骤。python比c慢的一个基本的原因就是数字计算上面的操作。
2.python是一种解释型的语言而不是编译型的
我们可以看到解释型语言和编译型语言的区别。一个聪明的编译器知道怎么提前优化,避免重复和不必要的操作,从而提高效率。当然,在这一点上也是仁者见仁智者见智。
3.python的对象模型导致存储效率低下
python存储数据效率低下的原因,主要可以从下图看出:
当然说了python这么多缺点,为什么python用的人还这么多,因为它很简单啊。python用起来的确很简单,就我个人的使用感受而言,除了matlab,我没有看过比python还要简单的语言了。而且python的开源的库很多,所以做很多东西都很方便。
从后台看python--为什么说python是慢的的更多相关文章
- 后台运行程序-服务器、python
0前言 最近遇到一个需求,我有一个很小的python程序,需要一直在服务器器上跑,但是我不想一直开着浏览器或者Xshell 7,所以记录一下怎么解决的. 用到的指令是nohup 具体代码就两行 sou ...
- Python学习之Python简介
Python简介 Python的由来 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象.解释型计算机程序设计语言,它是吉多·范罗苏姆(Guide van ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- python基础-初识Python和不同语言之间的区别
一.Python的创始人谁? Python之父:吉多·范罗苏姆GuidovanRossum 吉多·范罗苏姆是一名荷兰计算机程序员,他作为Python程序设计语言的作者而为人们熟知.在Python社区, ...
- 【Python大系】Python快速教程
感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容很多,加上各种标准库.拓展库, ...
- python学习之python开发环境搭建
Python简介 Python是一种面向对象.解释型计算机程序设计语言.Python语法简洁而清晰,具有丰富和强大的类库等等众多的特性,这是来自百度百科的介绍,在百度百科还能看到它的更详细的介绍信息, ...
- 智普教育Python培训之Python开发视频教程网络爬虫实战项目
网络爬虫项目实训:看我如何下载韩寒博客文章Python视频 01.mp4 网络爬虫项目实训:看我如何下载韩寒博客文章Python视频 02.mp4 网络爬虫项目实训:看我如何下载韩寒博客文章Pytho ...
- Python之路-python数据类型(列表、字典、字符串、元祖)操作
一.列表: 列表的语法,以中括号开通和结尾,元素以逗号隔开.例如:name = [] 列表是以下标取值,第一个元素下标是0,第二个元素下标是1,最后一个元素下标是-1. 1.增加 #name = ...
- 笨办法学 Python (Learn Python The Hard Way)
最近在看:笨办法学 Python (Learn Python The Hard Way) Contents: 译者前言 前言:笨办法更简单 习题 0: 准备工作 习题 1: 第一个程序 习题 2: 注 ...
随机推荐
- 使用 flex 弹性布局 ,相关教程记录
一.Flex布局是什么? Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为Flex布局. .box1{ dis ...
- 超大文件上传方案(ASP.NET)
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...
- POJ 2778 DNA Sequence ( AC自动机、Trie图、矩阵快速幂、DP )
题意 : 给出一些病毒串,问你由ATGC构成的长度为 n 且不包含这些病毒串的个数有多少个 分析 : 这题搞了我真特么久啊,首先你需要知道的前置技能包括 AC自动机.构建Trie图.矩阵快速幂,其中矩 ...
- HDU 6623 Minimal Power of Prime
Time limit 1000 ms Memory limit 65536 kB OS Windows 中文题意 给一个数n,设将n质因数分解后可以得到 \[n=\prod_{i=1}^{\omega ...
- HDU 1314 Numerically Speaking(大数加减乘除+另类二十六进制互相转换)
原题代号:HDU 1314 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1314 Numerically Speaking Time Limit: 2 ...
- B. Equal Rectangles
B. Equal Rectangles 给定4*N个数,是否能构成N个矩形 面积均相等 每次取两个大的,两个小的 #include<bits/stdc++.h> using namespa ...
- sysf接口的函数【转】
本文转载自:http://blog.csdn.net/manshq163com/article/details/7848714 说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是 ...
- ora600
4节点RAC:版本oracle11.2.0.4 22:20——23:40发生ora600 alert日志: Errors in file /u01/app/oracle/diag/rdbms/orcl ...
- Gradel 多渠道打包 代码混淆
http://blog.csdn.net/ttccaaa/article/details/47687241 http://www.bubuko.com/infodetail-987756.html h ...
- 012-elasticsearch5.4.3【五】-搜索API【一】搜索匹配所有matchAllQuery、全文查询[matchQuery、multiMatchQuery、commonTermsQuery、queryStringQuery、simpleQueryStringQuery]
一.概述 查询所使用的 QueryBuilders来源于以下 import static org.elasticsearch.index.query.QueryBuilders.*; 请注意,您可以使 ...