转载于忘情公子博客
链接: ( http://www.itwangqing.net.cn/15538297742581.html.
1 编程语言
在开始学习python前让我们先来说说编程语言,因为python语言仅仅只是编程语言中的一种而已,了解了编程语言能让我们学习python更加容易。
那么什么是编程语言?编程语言是用来干什么的?
在说这个之前让我们先来想想,人类创造出计算机是为什么?人类创造出计算机是为了更好的解决人类所不能或很难解决的问题。由此,我们可以简单的将人类需要解决的问题称之为问题空间(或用户空间),而将计算机称之为解空间(解决问题)。我们可以将解空间中的解决问题的能力抽象映射为用户空间中的解决方案。
编程语言是将计算机解决问题的能力给抽象出来的结果,将计算机解决问题的能力用人类所能理解的方式来描述,这就是编程语言。
有了编程语言以后,人类可以更方便的进行编程,但是新问题又来了,编程语言是偏向于人类的,也就是说编程语言是以人类所能理解的语言来描述的,通过编程语言来编写的程序,计算机是无法理解、无法直接在计算机内核中执行的,所以此时需要一个桥梁来对接人类与计算机,把偏向于人类的编程语言编译或者说翻译成计算机所能识别的语言,这就是编译器(或解释器)的由来。
说到编译器(解释器)就不得不说下编程语言的分类,编程语言以是否编译为分割可以简单的分为两类:静态语言和动态语言。
- 静态语言在执行前必须先通过编译器从头到尾编译一次,然后将编译后的结果拿到cpu中运行;
- 动态语言则可以以类似同声传译的方式将代码直接通过解释器解释之后在cpu中运行,也就是给解释器一条语句它解释一下立马在cpu中执行,再解释一条再执行,而不必从头到尾编译一次后再在cpu中执行。
所以可以这样总结一下,在静态语言中,人类与计算机之间的语言桥梁叫做编译器,而在动态语言中,则称之为解释器。
编程语言以与用户的距离来分割还可以分为低级语言和高级语言两种,所谓低级语言就是更偏向于计算机的语言,如微码编程语言,而高级语言则是更偏向于用户的语言,python就是一种高级语言。低级语言与高级语言的区别是高级语言更接近于用户,而不是指在性能上的高下,也不是指优越性上的高下。
2 32位系统与64位系统的区别以及系统运行机制解析
32位系统与64位系统的区别:
- 32位系统只支持最大4G内存
- 64位系统无限制(但是系统能用多大内存取决于主板最大支持的内存大小)
系统存取数据的过程解析:
OS、CPU、MEMORY、DISK间数据如何交互?
硬盘速度举例:
5400 RPM = 骑自行车
7200 RPM = 骑标准电动车
10000 RPM = 骑改装过的快速电动车
15000 RPM = 骑摩托车
SSD = 开轿车
但是即便是硬盘速度的顶峰也赶不上内存的速度。
3 python简介
python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
python语法简洁明晰,特色之一是强制用空白符作为语句缩进。
python具有丰富和强大的库,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
python语法简洁明晰,特色之一是强制用空白符作为语句缩进。
python具有丰富和强大的库,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
3.1 python的应用领域
Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。
python主要应用领域:
- 当做脚本语言来实现系统自动化管理
- 当做控制语言:调用其它语言的接口来实现应用程序的开发 云计算:openstack
- web开发:成熟的框架有django、Tornado(轻量级、异步)、Flask(微型)、Web.py(简单)等
- 数据采集:有好用的http库,比如requests、urllib2等
- 科学计算:常用的模块有Numpy、SciPy、Matplotlib、Enthought librarys、pandas等
- 大数据分析:常用的模块有Numpy、Pandas等 系统运维: 运维人员必备语言
- 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。
3.2 python的优缺点
python的优点:
- 简单易懂:入门容易,掌握后可以编写非常复杂的程序
- 开发效率高:Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子
- 高级语言:当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
- 可移植:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
- 可扩展:如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中调用它们
- 可嵌入:可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能
python的缺点:
- 速度慢:Python的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的
- 代码不能加密:因为Python是解释性语言,它的源码都是以明文形式存放的,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现
- 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global InterpreterLock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Winthread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行
任何一门语言都不是完美的,都有擅长和不擅长做的事情,建议各位不要拿一个语言的劣势去跟另一个语言的优势来去比较,语言只是一个工具,是实现程序设计师思想的工具,就像我们之前中学学几何时,有的时候需要要圆规,有的时候需要用三角尺一样,拿相应的工具去做它最擅长的事才是正确的选择。
3.3 python的解释器
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。
由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码。
- CPython:原始、标准的实现方式
- IPthon:IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE
- PyPy:PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度
- Jython:用于与Java语言集成的实现,可以直接把Python代码编译成Java字节码执行
- IronPython:用于与.NET框架集成的实现,可以直接把Python代码编译成.Net的字节码