03_Python生态和开发环境

内容摘要:Python是极少数能够兼顾操作简单与功能强大的编程语言。特别是在当今的大数据和AI时代,几乎所有的新技术都提供Python支持,在Python生态中可以使用的工具异常丰富。相比其它语言,Python程序的代码行更简洁、更易阅读、更易调试和扩展。 它可以帮你快速且毫不费力地完成诸多事情,使得编程充满了乐趣。Python 是一门优秀的语言,值得你去学习!

1、Python简史

Python因为其开源、易读写、简洁等特点,赢得了广泛的群众基础,被无数程序员热烈追捧。
编程问答网站 Stackoverflow 的一项调查显示:在高收入国家 Python 格外受欢迎,在过去五年中,Python的使用量出现了惊人的增长(年增长率达到27%)。该调查揭示,Python 是近年来增长最快的主流编程语言
在未来的十年里,Python还会继续有一个很好的发展趋势。据TIOBE官网专家预测,Python可能在3到4年内取代C语言和Java,成为世界上最流行的编程语言。需要注意的是Python和Matlab类似,都是解释型语言,要追求性能,那还是用C吧,但是Python也有很多优化工具支持,如Cython,很多情况下优化是没问题的。

2、怎么安装和开始使用

Python由于其开源特性,导致版本很多,需要注意的是2.X和3.X是两个系列,建议直接学3.X(未来估计2.7版本之后更新会比较少)。使用Python的价值还是在于其强大的扩展包,类似Matlab的工具包,不同的是都是免费的,功能上还一点不必那些收费的差。如果单独安装Python环境,再一个个包安装的确比较麻烦。没关系,集成工作有人帮忙做完了,那就是Anaconda工具,直接对应你的系统版本下载安装就行了。

一款优秀的编辑器能够帮助你更轻松地编写 Python 程序,使您的编程之旅更加舒适。这些编译器支持语法高亮 ,能够通过对代码标以不同颜色来帮助你区分Python 程序中的不同部分,从而能够让你更好地看清程序,并使程序的运行模式更加形象化。通过这些编译器,你还可以将Python程序保存为文件,从而便于多次地运行和修改这些程序,实现您的编程目标。

如果您对编译器还没有概念, 我们推荐您使用目前比较流行的Python编译器: Spyder (https://pypi.python.org/pypi/spyder) , 从哪里下载?别担心Anaconda都帮你集成好了 。该编译器与MATLAB的图形界面风格极其相似,都采用‘三窗口’模式,包括:

  1. Editor(编辑器), Editor用于编写代码;
  2. Object/ Variable Explorer(变量管理器), 用于查看内存中的变量数据;
  3. Console(控制台)。Console用于评估代码并且在任何时候都可以看到运行结果。
    在一个大显示器上,同时使用这三个窗口,您可以快速、高效地编写、调试和测试Python程序。
图1 Spyder环境的用户界面

安装完Anaconda,在你的程序菜单下至少有三个东西,一个是anaconda prompt,一个是juypter notebook,一个是spyder;三个有啥区别呢?

  • anaconda prompt,其实就是cmd加环境变量设置,是提供给管理员配置环境,安装包等用的,要设置虚拟环境,不同版本下的包管理等都在这里,在这个命令环境下,可以直接用“python + 脚本”来执行程序,还可以用conda命令执行各种安装包和配置等操作(提示一下:anaconda是一个集成管理环境,在里面你可以通过conda虚拟多个环境,它可以帮你同时管理2.7,3.6,3.7等多个python环境,有时候一个包依赖特定的python版本这个功能就很有用了)
  • spyder,集成编译环境IDE,给程序员用的,在里面可以开发,可以测试;
  • jupyter notebook,这个与spyder不一样,它是基于浏览器的,提供给用户有一个交互式上下文环境,上面写代码下面就出结果,整个过程像记笔记一样,所以叫notebook,定位就是教学演示的工作。适合本地不装环境,通过浏览器调用服务端来进行计算的应用场景。Jupyter生态下还有很多工具,Jupyter
    Hub,Jupyter kernel gateway等等,还支持R的内核。

好咱装完python环境,我们试试吧,再anaconda prompt里面输入python,回车,进入环境后,先来第一行代码:

import this

没错Zen of Python——Python之禅,这是Python编程和设计的指导原则,由Tim Peter所写,大家好好理解一下里面的精髓吧!

3、Python中的科学栈

科学栈(Scientific Stack)由一系列重要的库集合而成。Python语言除了开发源码、易于阅读和编写外,更重要的在于其背后有着强大的科学栈支撑(搞科研的绝对绕不开呦),这就是为什么它可以代替Matlab或者R等领域专用语言和工具集的原因所在。在当今的许多科技领域,通过第三方的Python包,几乎可以提供给不同类型用户任何所需要的功能。常用的科学栈包括:

  1. NumPy,提供多维数组对象(注意:python自身没有数组这个类型),实现同构或者异构数据的存储;提供操作这一数组对象的优化函数和方法。
  2. SciPy,它是一组子库和函数,实现科学数据分析中常用到的重要标准数值函数功能。如三次样条插值和数值积分的函数。
  3. Matplotlib, 它提供了功能强大的绘图和可视化库,可以实现丰富的二维和三维可视化功能。
  4. PyTables,它是当今十分流行的HDF5数据存储的封装器,实现了基于层次数据库和文件格式的优化磁盘I/O操作。
  5. Pandas,其在NumPy基础上构建,提供更加丰富的时间序列和表格数据管理及分析类,Pandas里面的数据框Dataframe类型非常强大,谁用谁知道哦!;并在绘图方面与Matplotlib库、在数据存储和读取方面与PyTables紧密结合。
    当然,还有很多优秀的第三方库,实在无法一一列举,自能在实践中学习,但只要你能想到,估计就已经有人做了。

4、不得不说的Notebook

Jupyter Notebook 是一个交互式笔记本,支持运行 40 多种编程语言。其本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化,支持Markdown语法。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。Jupyter Notebook保存的文件叫ipynb,与py格式不同,通过渲染可以转换为html直接放到网站上,也可以导出pdf直接作为教学材料。
通过Jupyter Notebook工具,我们可以在本机上连接远端的高性能计算机,并利用此高性能计算机运行计算量较大的Python程序,节约计算时间。界面长这样子:


图2 Jupyter Notebook在浏览器内的样子

Jupyter Notebook还可以通过笔记本扩展(nbextensions)其功能,实质上是一种JavaScript模块,可以加载到笔记本前端页面上,可以大大提升用户体验。比如:变量浏览啊,类的缩放,笔记本提纲生成等等。合理的应用这些扩展工具,能有效提高你的工作效率。

一句话总结:我是一个最早学C,研究生随导师用Fortran,为了做程序界面还自学过VB,Delphi(Pascal语法,古董了,现在的FMX技术支持跨平台编译),做点面向对象,后来博士了用Matlab较多,三年前开始逐渐接触python,深刻理解了为什么它叫胶水语言,总之,早一天使用,早一天受益,谁用谁知道呗!

友情提示:学python看书没用,因为很难记住,只有动手。

扩展阅读:
《A Byte of Python》中译本

你可能感兴趣的:(03_Python生态和开发环境)