01 Python初探

Python初探

Become a better version of yourself!

诞生

  • python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年开始写Python语言的编译器

  • 1991年,第一个Python编译器诞生。它是用C语言实现的

  • Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.

  • Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础

  • Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生

  • Python 2.5 - September 19, 2006

  • Python 2.6 - October 1, 2008

  • Python 2.7 - July 3, 2010

  • In November 2014, it was announced that Python 2.7 would be supported until 2020

  • 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

Python3.0与2.x区别

http://www.jb51.net/article/78048.htm
抽时间好好整理

目前Python主要应用领域:

  • 云计算: 云计算最火的语言, 典型应用OpenStack
  • WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系统运维: 运维人员必备语言
  • 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
  • 图形GUI: PyQT, WxPython,TkInter

编程语言

一、编译型vs解释型

  1. 编译型(快),在底层
  2. 解释型(慢),兼容性高、易移植
  • java一次编译到处执行
  • .net一次编码到处编译

动态语言vs静态语言

  1. 动态语言 变量不用指定数据类型。Python ruby
  2. 静态语言 需指定类型 c# java

强类型vs弱类型

1.强类型 严谨,不可改变数据类型
2.弱类型 相反

Python为动态解释强类型语言,Java c#为静态强类型语言

Python的优缺点

优点

  • Python的简单易懂
  • 开发效率非常高,Python有非常强大的第三方库
  • 高级语言,无需考虑诸如如何管理你的程序使用的内存一类的底层细节
  • 可移植性强
  • 可扩展性强 如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
  • 可嵌入性强 你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

缺点:

  • 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些
  • 代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的
  • 线程不能利用多CPU问题,GIL即全局解释器锁(Global Interpreter Lock)使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。

Python解释器

CPython

默认解释器,CPython是使用最广的Python解释器。这个解释器是用C语言开发的。

简述Python的运行过程

在硬盘上可以看到的pyc文件,而PyCodeObject则是Python编译器真正编译成的结果。当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。(比Java快,有些时候不比c慢)
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

小结

Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

生活本就平淡,努力是本分,完成任务不算本事,你所缺少的,永远是锦上添花的能力。
原文地址:https://www.cnblogs.com/monkeyfx/p/6886003.html