Python介绍
Python的由来
Python的创始人为荷兰人吉多·范罗苏姆[3] (Guido van Rossum)。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》(Monty Python’s Flying Circus)。
ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC 这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido 认为是其非开放造成的。Guido 决心在Python 中避免这一错误。同时,他还想实现在ABC 中闪现过但未曾实现的东西。
就这样,Python在Guido手中诞生了。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。
2022年5月最新排行榜
总的来说,这几种编程语言各有千秋。C语言是可以用来编写操作系统的贴近硬件的语言,所以,C语言适合开发那些追求运行速度、充分发挥硬件性能的程序。而Python是用来编写应用程序的高级编程语言。
当你用一种语言开始作真正的软件开发时,你除了编写代码外,还需要很多基本的已经写好的现成的东西,来帮助你加快开发进度。比如说,要编写一个电子邮件客户端,如果先从最底层开始编写网络协议相关的代码,那估计一年半载也开发不出来。高级编程语言通常都会提供一个比较完善的基础代码库,让你能直接调用,比如,针对电子邮件协议的SMTP库,针对桌面环境的GUI库,在这些已有的代码库的基础上开发,一个电子邮件客户端几天就能开发出来。
Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。
除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。
Python的解释器分类
由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。
CPython
当我们从Python官方网站
下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python
就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>
作为提示符,而IPython用In [序号]:
作为提示符。
PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
Python应用领域
Python现在被广泛用于众多领域:
- 系统运维 通过Python提供API能方便的进行系统维护和管理,Python已成为Linux系统下的标志性语言之一;
- 云计算 Python是目前云计算领域最火的语言,典型应用为OpenStack;
- Web编程 出现了很多python的web开发框架,如django、tronado,flash等;Youtube、豆瓣、知乎、春雨医生等公司所有业务几乎都是用Python完成,另外python在google内部也被大量使用;
- 科学计算、人工智能 NumPy扩展提供了大量标准数学库的接口,其他的典型库还有SciPy、Matplotlib、Enthgout librarys、pandas;
- 文本处理 Python提供的re模块支持正则表达式,还提供SGML和XML分析模块;
- 数据库编程 程序员可以通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server、Orace、DB2、MySQL、SQLite等数据库进行通信;此外,Python自带一个Gadfly模块,提供了
一个完整的SQL环境; - 网络编程 Python提供了丰富的模块支持socket编程,能方便快速地开发分布式应用程序;
- 图形处理 有PIL、Tkinter、PyQT等图形库支持,能方便进行图形处理;
- 其他 python可以用来做很多事其他的事情,如编写爬虫程序、多媒体应用、pymo引擎(AVG游戏引擎)
Python优点与缺点
优点
- 简单易学、功能强大 python的定位时“优雅”、“明确”、“简单”,但是功能却很强大;
- 丰富的库、开发效率高 python有非常强大的第三方库,基本上你想通过计算机实现的任何功能,python官方库里都有相应的模块进行支持;在基础库的基础上进行开发,大大降低开发周期,提高了开发效率;
- 高级语言、抽象程度高 用Python编写程序的时候无需考虑过多底层细节,如如何管理程序使用的内存等;
- 面向过程、面向对象 Python及支持面向过程编程,也支持面向对象编程;在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的;而在面向对象的语言中,程序数据(属性)和功能(函数/方法)组合而成的对象构建起来的;
- 可移植性 由于它开源的本质、Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上);如果你小心的避免使用依赖于特定系统的特性,那么你的python程序无需修改就可以在几乎所有的系统平台上运行;
- 可扩展性 如果需要一段关键代码运行得更快或者希望某些算法不公开,可以将这部分程序用C/C++编写,然后再Python中调用。
- 可嵌入型 可以把Python嵌入C/C++程序中,从而实现向用户提供脚本的功能;
缺点
- 线程不能利用多CPU 这是Python被人诟病最多的一个缺点。Python的线程是操作系统的原生线程,在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程执行。一个Python解释器进程内有一条主线程,以及多条用户程序的执行子线程。由于GIL(Global Interpreter Lock,全局解释器锁,它是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行)的存在,使得即使在多核CPU平台上,还是会禁止多线程的并行执行。
- 代码不能加密 由于Python是一个解释型语言,其源代码都是以明文存在的。
- 执行速度慢 这里是指与C和C++相比,Python确实要慢很多,这是由语言特性确定的;另外Python比Java也会慢一点,JVM比PVM的实现更底层一些,因此JVM在将字节码翻译为机器码的速度也就更快一些。
- 多行语句与命令行输出问题 由于Python规定用缩进来表示代码结构,而不支持分号分割,因此在大多数情况下不能将多条程序语句写成一行;如果在shell下要使用多条python语句来完成一个功能时,必须将程序写入.py文件中。
Python基础
Python是一种计算机编程语言。计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能有歧义,所以,任何一种编程语言都有自己的一套语法,编译器或者解释器就是负责把符合语法的程序代码转换成CPU能够执行的机器码,然后执行。Python也不例外。
Python的语法比较简单,采用缩进方式,写出来的代码就像下面的样子:
# print absolute value of an integer:
a = 100
if a >= 0:
print(a)
else:
print(-a)
以#
开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号:
结尾时,缩进的语句视为代码块。
注意,Python程序是大小写敏感的,如果写错了大小写,程序会报错。