zoukankan      html  css  js  c++  java
  • 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,而是通过网络调用来交互,确保各程序之间的独立性。

    生活本就平淡,努力是本分,完成任务不算本事,你所缺少的,永远是锦上添花的能力。
  • 相关阅读:
    洛谷—— P3353 在你窗外闪耀的星星
    洛谷—— P1238 走迷宫
    洛谷—— P1262 间谍网络
    9.8——模拟赛
    洛谷—— P1189 SEARCH
    算法
    May 22nd 2017 Week 21st Monday
    May 21st 2017 Week 21st Sunday
    May 20th 2017 Week 20th Saturday
    May 19th 2017 Week 20th Friday
  • 原文地址:https://www.cnblogs.com/monkeyfx/p/6886003.html
Copyright © 2011-2022 走看看