A4cbc51e111fbee14fa292f47e7f6f2e
Python-基础-简介

版权声明:本文为博主原创文章,遵循CC BY-NC-ND 4.0 版权协议,转载请附上原文出处链接和本声明。

1.1.Python历史

Python的创始人: Guido van Rossum;之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者。

Guido van Rossum 像极了奈飞出品的美剧"纸钞屋" 中的教授
"纸钞屋" 第一季 豆瓣link
强烈安利这部剧。

Guido van Rossum

Guido van Rossum

诞生于1989年。作者前身也是C++程序员,之前也参加设计了一种叫ABC的教学语言,就Guido本人看来,ABC 这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido 认为是其非开放造成的(相对封闭的开发语言、扩展性、推广性相对不太成功。)。Guido 决心在Python 中避免这一错误。同时,他还想实现在ABC 中闪现过但未曾实现的东西。

1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

Version release dates

Release dates for the major and minor versions:

  • Implementation started - December, 1989

  • Internal releases at Centrum Wiskunde & Informatica - 1990

  • Python 0.9.0 - February 20, 1991
    • Python 0.9.1 - February, 1991
    • Python 0.9.2 - Autumn, 1991
    • Python 0.9.4 - December 24, 1991
    • Python 0.9.5 - January 2, 1992
    • Python 0.9.6 - April 6, 1992
    • Python 0.9.8 - January 9, 1993
    • Python 0.9.9 - July 29, 1993
  • Python 1.0 - January 1994
    • Python 1.2 - April 10, 1995
    • Python 1.3 - October 12, 1995
    • Python 1.4 - October 25, 1996
    • Python 1.5 - December 31, 1997
    • Python 1.6 - September 5, 2000
  • Python 2.0 - October 16, 2000
    • Python 2.1 - April 15, 2001
    • Python 2.2 - December 21, 2001
    • Python 2.3 - July 29, 2003
    • Python 2.4 - November 30, 2004
    • Python 2.5 - September 19, 2006
    • Python 2.6 - October 1, 2008
    • Python 2.7 - July 3, 2010
  • Python 3.0 - December 3, 2008
    • Python 3.1 - June 27, 2009
    • Python 3.2 - February 20, 2011
    • Python 3.3 - September 29, 2012
    • Python 3.4 - March 16, 2014
    • Python 3.5 - September 13, 2015
    • Python 3.6 - December 23, 2016
    • Python 3.7 - June 27, 2018
    • Python 3.7.4 - July 8, 2019

1.2.热门排行

最新的TIOBE排行榜,Python赶超C++占据第三。
https://www.tiobe.com/tiobe-index/

TIOBE排行榜

TIOBE排行榜

IEEE Spectrum (电气和电子工程师协会) 2018 编程语言 Top 10
http://spectrum.ieee.org/static/interactive-the-top-programming-languages-2018

IEEE Spectrum2018 编程语言 Top 10

IEEE Spectrum2018 编程语言 Top 10

Python 的排名从去年开始就在持续上升,并跃至第一。但排在前四名的语言 Python、C、Java 和 C++ ,其实都保持着非常接近的流行度。

1.3.Python应用领域

云计算

云计算最火的语言, 典型应用OpenStack

WEB开发

python相比php / ruby的模块化设计,非常便于功能扩展;多年来形成了大量优秀的web开发框架,并且在不断迭代;如目前优秀的全栈的django、框架flask,都继承了python简单、明确的风格,开发效率高、易维护,与自动化运维结合性好,python已经成为自动化运维平台领域的事实标准;众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。

人工智能

基于大数据分析和深度学习而发展出来的人工智能本质上已经无法离开python的支持,目前世界优秀的人工智能学习框架如Google的TransorFlow 、FaceBook的PyTorch以及开源社区的神经网络库Karas等是用python实现的,甚至微软的CNTK(认知工具包)也完全支持Python,而且微软的Vscode都已经把Python作为第一级语言进行支持。

系统运维

Python在与操作系统结合以及管理中非常密切,目前所有linux发行版中都带有python,且对于linux中相关的管理功能都有大量的模块可以使用,例如目前主流的自动化配置管理工具:SaltStack Ansible(目前是RedHat的)。目前在几乎所有互联网公司,自动化运维的标配就是python+Django/flask,另外,在虚拟化管理方面已经是事实标准的openstack就是python实现的,所以Python是所有运维人员的必备技能。

金融

量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测

大数据

Python相对于其它解释性语言最大的特点是其庞大而活跃的科学计算生态,在数据分析、交互、可视化方面有相当完善和优秀的库(python数据分析栈:Numpy Pandas Scipy Matplotlip Ipython), 并且还形成了自己独特的面向科学计算的Python发行版Anaconda,而且这几年一直在快速进化和完善,对传统的数据分析语言如R MATLAB SAS Stata形成了非常强的替代性。

图形GUI

PyQT, WxPython, TkInter, Kivy

1.4.Python行业应用

公司或机构 应用举例
CIA 美国中情局网站就是用Python开发的
NASA 美国航天局(NASA)1994年起把python作为主要开发语言(使用Python进行数据分析和运算)
Google Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
Facebook 大量的基础库均通过Python实现的
YouTube 世界上最大的视频网站YouTube就是用Python开发的
Dropbox 美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
Instagram 美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
Redhat 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
豆瓣 公司几乎所有的业务均是通过Python开发的
知乎 国内最大的问答社区,通过Python开发(国外Quora)

2.编程语言简介和特点

编程语言主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言,每个分类代表什么意思呢,我们一起来看一下。

2.1.编译和解释型语言的区别

CPU不能直接认识并执行我们写的语句,它只能认识机器语言(CPU指令集;二进制的形式);因此我们开发语言的Virtual Machine要将识别的开发语言转换成机器语言让CPU去执行;那么就有两种以下两种方式:

编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;

解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.

编译型 解释型 混合型
C Java Script Java
C++ Python C#
GO Ruby N/A
Swift PHP N/A
Ojbect-C Perl N/A

2.2.编译和解释型优缺点

编译型

  • 优点:
    编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。

  • 缺点:
    编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

解释型

  • 优点:
    有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

  • 缺点:
    每次运行的时候都要解释一遍,性能上不如编译型语言。

2.3.静态和动态语言

通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。

  • 动态类型语言:
    动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

  • 静态类型语言:
    静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

2.4.强类型和弱类型定义语言

强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!

例如:
Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言);

JAVA是静态语言,是强类型定义语言(类型安全的语言)。

  • 强类型定义语言:
    强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
top Created with Sketch.