最近有一个朋友问我:为什么我要用Python,这是一个好问题,今天有空,把这个问题简单整理了一下,回来朋友的问题。该整理主要来源于网络和其他资料,如果有侵权还请告知。

        Python的好处主要有以下几种(来源自《集体智慧编程》英文版《Programming Collective Intelligence Building Smart Web 2.0 Applications》这本书:
        简练
            使用像Python这样的动态类型语言编写的代码往往比用其他主流语言编写的代码更加简短。这意味着,在完成示例的过程中会有更少的录入工作,而且这也意味着我们将更容易记住算法并真正领会算法的原理。
        易于阅读
            Python不时被人们指为“可执行的伪代码”。虽然很明显这是夸大之词,但是它表明,大多数有经验的程序员可以读懂Python代码并领会代码所要表达的意图。
        易于安装
            不管是Windows,Linux还是Mac系统,只要配置好Python的环境,只需要easy_install  XX或者pip install XX 就可以安装所需要的第三方扩展包。当然,对于Windows 64bit的操作系统来说,可能稍微麻烦一点,有些会出现兼容性问题,不过也都可以找到相应的解决方案。
        易于扩展
            Python附属了很多的标准库,这些涉及数据函数,XML解析,以及网页下载(笔者注:Python的BeautifulSoup是笔者见过的做好的HTML/XML解析工具之一,速度快,文档例子非常多),RSS解析,SQLLite等等
        交互性
            Python可以直接从命令行运行程序,它还有交互提示,允许我们键入函数调用,创建对象,并以交互的形式对包进行测试。
        多范式
            Python支持面向对象,过程式和函数式的编程风格。机器学习算法千差万别,最为清晰的做法是针对不同算法采用不同的范式。有时将函数作为参数传入很有用处,而有时我们则需要再对象中捕获状态。对于这两种方式,Python都比较好的予以支持。
        多平台和开源免费
            Python有一个针对所有主流平台的单一参考实现,并且对所有的平台都是免费的。Linux和Mac系统一般都是自带Python的环境。Windows需要自行安装,从visual studio 2013开始,微软平台也开始支持Python的开发功能。
        
        在这里还有一个需要格外注意的事情,对于Python来言,Python 解释器不是完全线程安全的。在Python 多线程当中,存在一个叫Global Interpreter Lock(GIL)的东西,直译就是全局解释器锁。它的作用在于让同一时刻只能有一个线程对于python对象进行操作。Python已经提供了各种机制让我们进行多线程同步,为什么又要整这个GIL呢?这是因为程序员控制的同步是对各个程序中可见的变量,而GIL同步的是解释器后台的不可见变量,比如为了进行垃圾回收而维护的引用计数。如果没有GIL,有可能出现由于线程切换导致的对同一个对象释放两次的情况。这点需要格外注意。
        
        关于为什么要用Python也可以参照如下的两篇博客描述
        为什么要使用Python:http://blog.csdn.net/caimouse/article/details/41550045
        为什么我们要用Python:http://www.cnblogs.com/huxi/archive/2010/12/19/1910425.html
        Python线程状态和全局解释器锁:http://blog.csdn.net/cglover/article/details/2566450

        额外追加一张Python与Java的一个实现对比:
        来源网站:http://spark.apache.org/examples.html
        
    
        
        
        

为什么我们要用Python的更多相关文章

  1. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  2. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  3. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  4. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  5. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  6. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  7. Python编码记录

    字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...

  8. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  9. python开发编译器

    引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...

  10. 关于解决python线上问题的几种有效技术

    工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...

随机推荐

  1. Html5_标签

    HTML 1.一套规则,浏览器认识的规则. 2.开发者: 学习Html规则 开发后台程序: - 写Html文件(充当模板的作用) ****** - 数据库获取数据,然后替换到html文件的指定位置(W ...

  2. LeetCode(279)Perfect Squares

    题目 Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9 ...

  3. UVA - 11054 Wine trading in Gergovia 扫描法

    题目:点击打开题目链接 思路:考虑第一个村庄,如果第一个村庄需要买酒,那么a1>0,那么一定有劳动力从第二个村庄向第一个村庄搬酒,这些酒可能是第二个村庄生产的,也可能是从其他村庄搬过来的,但这一 ...

  4. CDH4 journalnode方式手工安装手册之三

    一.                                启动JournalNode 每台机器都要执行: mkdir -p /smp/hadoop-cdh4/bch/ chmod -R 77 ...

  5. foreach遍历数组的表格

    <?php /** * * @authors Your Name (you@example.org) * @date 2017-03-17 19:06:19 * @version $Id$ */ ...

  6. 小米手机安装 charles 证书,提示“没有可安装的证书”

    错误环境: 1. Mac 下的 charles 2. 小米手机(MI 6 MUI 9.6 ,Android 8.x) 错误提示: 安装 charles 证书时,提示“没有可安装的证书” 解决方法: 1 ...

  7. tar.xz结尾的文件的解压缩方法

    例如: codeblocks-13.12-1_i386.debian.stable.tar 这个压缩包也是两层压缩,外面是xz压缩方式,里层是tar压缩方式. 解压缩方法: $xz -d ***.ta ...

  8. 优秀的缓存请求库,快速请求接口和图片:WTRequestCenter

    WTRequestCenter 方便缓存的请求库无需任何import和配置,目前实现了基础需求如果有其他需要请在issue 上提出,谢谢! 使用方法 Usage 注意:所有的请求都是缓存的 GET 请 ...

  9. 装箱I(01背包)

    描述 给两个有一定容量的箱子,往里面装宝石(宝石总容量不能超过箱子容量),不同的宝石有不同的容量和价值.求两个箱子里最大宝石的价值. 输入 line 1: Input n;  n:表示宝石数量    ...

  10. Python web 周总结

    按顺序查询 order_by()    order_by(- ) 下拉框默认显示 <select name="canteen_type_id" id="" ...