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

    生活本就平淡,努力是本分,完成任务不算本事,你所缺少的,永远是锦上添花的能力。
  • 相关阅读:
    iOS常用第三方库之Masonry
    iOS超全面试题,面试前看一看,不错
    自学安卓练习作品单词APP(1)-安卓的hello word与有道字典防爬虫破解
    shrio的rememberMe不起作用
    上传组件uploadify在spring中返回406 / Not Acceptable 问题解决
    由max_allowed_packet引发的mysql攻防大战
    又到毕业季你为什么没有工作
    mavan下scala编译中文乱码的问题.以及内存溢出问题解决
    @RestController失效
    BeanInstantiationException: Failed to instantiate [java.time.LocalDateTime]
  • 原文地址:https://www.cnblogs.com/monkeyfx/p/6886003.html
Copyright © 2020-2023  润新知