Python
Python介绍
Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种面向对象、直译式的计算机程序语言,具有近二十年的发展历史。它包含了一组功能完备的标准库,能够轻松完成很多常见的任务。它的语法简单,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。
与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。
Python的官方解释器是CPython,该解释器用C语言编写,是一个由社区驱动的自由软件,目前由Python软件基金会管理。
Python支持命令式程序设计、面向对象程序设计、函数式编程、面向侧面的程序设计、泛型编程多种编程范式。
Python与Matlab的比较
说起科学计算,首先会被提到的可能是MATLAB。然而除了MATLAB的一些专业性很强的工具箱还无法替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相应的扩展库。和MATLAB相比,用Python做科学计算有如下优点:
- 首先,MATLAB是一款商用软件,并且价格不菲。而Python完全免费,众多开源的科学计算库都提供了Python的调用接口。用户可以在任何计算机上免费安装Python及其绝大多数扩展库。
- 其次,与MATLAB相比,Python是一门更易学、更严谨的程序设计语言。它能让用户编写出更易读、易维护的代码。
- 最后,MATLAB主要专注于工程和科学计算。然而即使在计算领域,也经常会遇到文件管理、界面设计、网络通信等各种需求。而Python有着丰富的扩展库,可以轻易完成各种高级任务,开发者可以用Python实现完整应用程序所需的各种功能。
Python与大数据
- Matplotlib
用Python实现的类matlab的第三方库,用以绘制一些高质量的数学二维图形。 - SciPy
基于Python的matlab实现,旨在实现matlab的所有功能。 - NumPy
基于Python的科学计算第三方库,提供了矩阵,线性代数,傅立叶变换等等的解决方案。 - PyGtk
基于Python的GUI程序开发GTK+库。 - PyQt
用于Python的QT开发库。 - WxPython
Python下的GUI编程框架,与MFC的架构相似。
著名的第三方框架
- Django
开源Web开发框架,它鼓励快速开发,并遵循MVC设计,开发周期短。 - Flask
轻量级的Web框架。 - ActiveGrid
企业级的Web2.0解决方案。 - Karrigell
简单的Web框架,自身包含了Web服务,py脚本引擎和纯python的数据库PyDBLite。 - Tornado
一个轻量级的Web框架,内置非阻塞式服务器,而且速度相当快 - webpy
一个小巧灵活的Web框架,虽然简单但是功能强大。 - CherryPy
基于Python的Web应用程序开发框架。 - Pylons
基于Python的一个极其高效和可靠的Web开发框架。 - Zope
开源的Web应用服务器。 - TurboGears
基于Python的MVC风格的Web应用程序框架。 - Twisted
流行的网络编程库,大型Web框架。 - Quixote
Web开发框架。
Python学习网站
- http://www.runoob.com/python3/python3-tutorial.html
- http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
- 介绍SciPy
http://old.sebug.net/paper/books/scipydoc/scipy_intro.html#weavec - 介绍 numpy
http://old.sebug.net/paper/books/scipydoc/numpy_intro.html - 介绍sympy
http://old.sebug.net/paper/books/scipydoc/sympy_intro.html - 介绍matplotlib
http://old.sebug.net/paper/books/scipydoc/matplotlib_intro.html - 全面介绍python
http://old.sebug.net/paper/books/scipydoc/index.html#id2