1python由来

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆(龟叔)于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, [2] 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。 [3]
Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。 Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。

2.Python语言的发展

Python从诞生一直更新到现在,经历了多个版本。截止到目前,官网仍然保留的版本主要是基于Python2.x和Python3.x系列,具体如表所示
Python2.7是Python 2.x系列的最后一个版本,已经停止开发,计划在2020年终止支持。Guido决定清理Python2.x系列,并将所有最新标准库的更新改进体现在Python 3.x系列中。Python3.x系列的一个最大改变就是使用UTF-8作为默认编码,从此,Python3.x系列中就可以直接编写中文程序了。
另外,Python3.x系列比Python2.x系列更规范统一,其中去掉了某些不必要的关键字与语句。由于Python3.x系列支持的库越来越多,开源项目支持Python3.x的比例已大大提高。鉴于以上理由,本书推荐读者直接学习Python3.x系列。

3.Python语言的优缺点

1). 简单

Python是一种代表简单主义思想的语言,阅读一段Python程序就像在阅读一篇文章,这使开发者能够专注于解决问题而不是去搞明白语言本身。

2). 易学

Python有极其简单的语法,如果开发同样的功能,使用其他语言可能需要上百行代码,而Python只需几十行代码就可以轻松搞定。

3). 免费、开源

Python是FLOSS(自由/开放源码软件)之一,使用者可以自由地发布这个软件的拷贝、阅读它的源代码并对它进行修改,这也是Python如此优秀的原因之一。

4). 可移植性

由于其开源本质,Python已经被移植在许多平台上,例如Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE等。

5)解释性

C/C++语言在执行时需要经过编译,生成机器码后才能执行。Python是直接由解释器执行。由于不再需要担心如何编译程序、如何确保连接转载正确的库等,所有这一切使得Python的使用更加简单。

6) 面向对象

Python从设计之初就已经是一门面向对象的语言。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。

7) 可扩展性

假如用户需要一段关键代码运行得更快或者希望某些算法不公开,可以把部分程序用C或C++语言编写,然后在Python程序中使用它们。

8)可嵌入性

用户可以把Python嵌入到C/C++程序,从而向程序提供脚本功能。

9)丰富的库

Python提供丰富的标准库,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI、Tk以及其他与系统相关的库除了上面提到的各种优点,Python 也是有缺点的。

Python缺点

1) 运行速度慢
运行速度慢是解释型语言的通病,Python 也不例外。
Python 速度慢不仅仅是因为一边运行一边“翻译”源代码,还因为 Python 是高级语言,屏蔽了很多底层细节。这个代价也是很大的,Python 要多做很多工作,有些工作是很消耗资源的,比如管理内存。
Python 的运行速度几乎是最慢的,不但远远慢于 C/C++,还慢于 Java。
但是速度慢的缺点往往也不会带来什么大问题。首先是计算机的硬件速度运来越快,多花钱就可以堆出高性能的硬件,硬件性能的提升可以弥补软件性能的不足。
其次是有些应用场景可以容忍速度慢,比如网站,用户打开一个网页的大部分时间是在等待网络请求,而不是等待服务器执行网页程序。服务器花 1ms 执行程序,和花 20ms 执行程序,对用户来说是毫无感觉的,因为网络连接时间往往需要 500ms 甚至 2000ms。
2) 代码加密困难
不像编译型语言那样,源代码会被编译成可执行程序(这个编译过程就相当于对源码加密),对于 Python 来说是直接运行源代码,因此对源码加密是比较困难的。

4.Python语言的用途

1)Web开发
Python经常被用于Web开发。例如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。Python定义了WSGI标准应用接口来协调HTTP服务器与基于Python的Web程序之间的通信。一些Web框架,如Django、TurboGears、web2py、Zope等,可以让程序员轻松地开发和管理复杂的Web程序。
2)网络爬虫
Python语言提供了大量网络模块用于对网页内容进行读取和处理,如urllib、cookielib、httplib、scrapy等。同时,这些模块结合多线程编程以及其他有关模块可以快速开发网页爬虫之类的应用程序。
网络爬虫是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。网络搜索引擎等站点通过爬虫软件更新自身的网站内容或其对其他网站的索引。网络爬虫可以将自己所访问的页面保存下来,以便搜索引擎事后生成索引供用户搜索。
3)科学计算与数据可视化
Python语言提供了大量模块用于科学计算与数据可视化,如NumPy、SciPy、SymPy、Matplotlib、Traits、TraitsUI、Chaco、TVTK、Mayavi、VPython、OpenCV等,这些模块涉及的应用领域包括数值计算、符号计算、二维图表、三维数据可视化、三维动画演示、图像处理以及界面设计等。
此外,Python语言在系统编程、GUI编程、数据库应用、游戏、图像处理、人工智能等领域被广泛应用。
4)游戏
 很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单,体积更小;而Python则支持更多的特性和数据类型
游戏开发人员经常需要动态创建和更新对象。
因此,Python 允许非常灵活的面向对象。因此,Python 开发人员无需编写太多代码即可轻松创建新对象和修改现有对象。
灵活的面向对象通过给出对象质量或特征(属性)的类或类型来操作。从它们生成的任何类别都继承了这些特征。
5)人工智能
其实Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,开始时是用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。而人工智能通俗讲就是人为的通过嵌入式技术把程序写入机器中使其实现智能化。显然人工智能和Python是两个不同的概念。
人工智能和Python的渊源在于就像我们统计数据或选择用excel制作表格时,因为在需要用到加减乘除或者、函数等时,只需要套用公司就可以。因为SUM、AVERAGE等这样的函数运行的背后,是C++/C#等语言已经编写好了代码,所以Excel只是工具和展现形式并不是它做计算。同理在学习人工智能时Python只是用来操作深度学习框架的工具,实际负责运算的主要模块并不依靠Python,真正起作用的是也是一大堆复杂的C++ / CUDA程序。
深度学习人工智能时,自己计算太复杂,还要写C++代码操作,这时程序员就想要不搞一套类似复杂的Excel配置表,直接搭建神经网络、填参数、导入数据,一点按钮就直接开始训练模型、得出结果。这个方法简单实用可是神经网络搭建起来太复杂,需要填写的参数太多,各种五花八门的选项也很难做成直观的图形工具。只能用一个类似Python的相对好用的语言,通过简化的程序代码来搭建神经网络、填写参数、导入数据,并调用执行函数进行训练。通过这种语言来描述模型、传递参数、转换好输入数据,然后扔到复杂的深度学习框架里面去计算。那么为什么会选择Python?
科学家们很早就喜欢用Python实验算法,也善于使用numpy做科学计算,用pyplot画数据图。恰好Google内部用Python也非常多,所以采用Python也是必然的。除Python外,实际上TensorFlow框架还支持JavaScript、c++、Java、GO、等语言。按说人工智能算法用这些也可以。但是官方说了,除Python之外的语言不一定承诺API稳定性。所以人工智能和Python就密不可分了。
龟叔给python的定位是“优雅”,“简单”,“明确”,“易懂”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来可以深入下去,可以编写那些非常非常复杂的程序。