



Python最初的版本发布于1991年,由Guido Van Rossum开发。Python的设计风格强调程序语法的可读性和简洁性,相比于C/C++或Java语言,Python提倡开发者用更少的代码表达想法。
优雅、明确、简单是Python的设计哲学。Python有一个核心的哲学:There is only one way to do it(完成一个需求只会有一种方法)。因此Python被许多人选作入门的程序语言。Python用户可以尽量用较少的、较简单易懂的代码实现需要的功能。Python提供了非常完善的基础函数库,包含网络存取、数据分析、GUI(图形用户界面)、数据库等大量内容。此外,Python与系统有很好的兼容性,因此被称作“胶水语言”。Python的主要贡献者Tim Peters在程序中隐藏了一个“小彩蛋”(The Zen of Python),里面放了Python开发设计的哲学。
>>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at fi rst unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
Python是一个高级编程语言,其解释型的运作模式为用户提供了快速开发的功能。所谓的高阶与低阶是指程序与机器和人之间的差距,高阶代表更贴近用户,而距离硬体机器遥远。程序本身是一种供用户与机器沟通的语言,使用编译器/翻译器逐步将程序语言转换成机器可理解的机器语言。高阶语言程序须经过比较麻烦的“翻译”,所以执行速度会比较慢。Python程序的执行过程如图2.1所示。
图2.1 Python程序的执行过程
Python有以下缺点:运行速度慢、代码不能加密、无法向下兼容。无法向下兼容的特性,导致用户要在Python 2与Python 3两个版本中进行选择。在早期,有人建议先不用急着学Python 3,原因是大部分好用的函数库还是以Python 2的版本存在的。新的环境可能会导致用户无法使用某些函数库。
目前,大部分在维护的函数库提供了相应的使用方法,所以以Python 3为主要版本来学习是比较恰当的,Python官方也公告在2020年终止对Python 2支持。
执行Python程序的主要方式如下。
● shell(交互界面):在主要终端机、命令提示视窗中输入“Python”,可以进入Python的交互界面。操作方式是输入一行程序代码,就会回传一段结果。因为程序是一行一行地执行,所以这种方式又被称为直译式或交互式方式。
● command(指令):把Python程序代码存为一个.py文件,在终端输入python<文件名>.py回传结果。
● jupyter/ipython notebook:jupyter(原本叫作ipython,后来独立出来)是一款把原生的Python加上一些额外功能的函数库。用户可以使用jupyther notebook进入一个网页版的交互界面。
● anaconda:把与数据分析有关的Python工具打包成一个更大的工具包,里面包含Python、常见的库、Spider IDE。
除了直接在shell或jupyter notebook上执行Python程序以外,用户一般会在编辑器或集成开发环境(Integrated Development Environment,IDE)上先写好Python程序,再通过Python执行程序。编辑器可以看作记事本。用户在编辑器中写完一段程序代码,将其存为.py文件,再通过Python指令执行程序。IDE同时包含了写程序码的编辑区与执行程序的执行区。
● 常见用来写Python的编辑器有sublime text、notepad、Atom。
● 常见用来写Python的IDE有PyCharm、Spyder、Rodeo。
一般来说,IDE会有一些额外的功能,如检查程序代码的优劣、检查程序有没有语法上的错误等,使开发过程中更方便。不过常见的编辑器都会有相应的库可以使用。有些人会觉得IDE有太多功能,用IDE开发程序也浪费计算机的资源,所以选择使用编辑器进行开发。
一般来说,Linux based的计算机中会安装好系统自带的Python。不过这可能会有几个问题出现:
● 如果项目所用版本与系统版本不同怎么办?
● 如果有多个项目,每个项目都有各自需要的版本及特定的库怎么办?
● 升级或修改系统自带的Python,遇到权限问题怎么办?
开发者希望环境支持不同的Python版本,每个项目也有自己的库环境。项目环境彼此独立,开发不容易出现互相干扰的情况。网络上有许多解决方案,以下列出笔者比较习惯的一种环境配置的方式。建议利用Pyenv搭配Virtaulenvwrapper。
pip是一款Python包管理工具(与JavaScript中的npm、Ruby中的gem、PHP中的Composer一样)。用户可以使用它来安装需要的包,而不用下载每一个包。一般Python安装包都自带pip,用户无须单独安装pip。与R语言不一样的是,Python的函数库是在Python程序外安装的,而不是在程序内。pip的使用方法如下。
$ pip-V # 查看 pip的版本,及对应的Python版本 $ pipinstall -U pip## 更新 pip $ piplist # 列出所有安装包 $ pipsearch package # 搜寻相关包 $ pipinstall package # 安装包 $ pipuninstall package # 移除包 $ pipinstall --upgrade package # 升级包
Virtualenv是Python的一种虚拟环境的库,可以用来创建独立的Python环境。这样用户就可以同时建立多个虚拟环境,每个虚拟环境中的Python使用不同的版本,并且虚拟环境之间相互独立。Virtaulenvwrapper是基于Virtualenv的操作工具,操作更方便。
# 安装 $ pip install virtualenv $ pip install virtualenvwrapper ## 环境配置 $ mkdir $HOME/.virtualenvs # 建立放置虚拟环境的目录 $ export WORKON_HOME=$HOME/.virtualenvs $ source /usr/local/bin/virtualenvwrapper.sh # 可以把上面这两句加到 ~/.zshrc 或~/.bash_pro file 中,不然就要每次都设置一次 ## 使用 $ mkvirtualenv envName # 建立一个跟目前环境相同的Python $ mkvirtualenv --no-site-packages envName # 建立一个跟没有任何库的Python环境 $ lsvirtualenv 或 workon # 查看目前有的虚拟环境 $ workon envName # 切换到某个虚拟环境 $ deactivate # 退出某个虚拟环境 $ rmvirtualenv envName # 退出某个虚拟环境
Pyenv是Python的版本管理工具。用户可以在同一台计算机上安装不同版本的Pyenv,并可以任意切换不同版本。
## 安装 $ brew install pyenv # Pyenv 并不是Python的库,所以要通过OS来安装而不是pip。 ## 环境配置 $ if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi $ export PYENV_ROOT=/usr/local/var/pyenv # 可以把上面这两句加到 ~/.zshrc 或~/.bash_pro file 中,不然就要每次都设置一次 ## 使用 $ pyenv versions # 查看目前所有安装的版本, system 是系统原本就安装的,如果使用brew安装,也会被放在system中 $ pyenv install 3.5.2 # 安装3.5.2版本的Python $ pyenv rehash # 重新载入 $ pyenv local 3.5.2 # 告诉系统现在的数据夹下要使用这个版本 $ pyenv local 3.5.2 --unset # 告诉系统现在的数据夹下不要使用这个版本
有了Pyenv和Virtaulenvwrapper,用户就可以根据不同的项目需求针对不同的Python建立自己的虚拟环境。大致流程如下:利用Pyenv安装/切换到特定版本—安装Virtaulenvwrapper—开启虚拟环境—done。
## 安装/切换到特定版本 $ pyenv install 2.7.10 $ pyenv rehash $ pyenv local 2.7.10 ## 安装 Virtaulenvwrapper $ pip install virtualenv $ pip install virtualenvwrapper ## 开启虚拟环境 $ mkvirtualenv py2dev ## 退出回到系统环境 $ deactivate $ pyenv local --unset 2.7.10
重复一次,就可以建立不同版本的虚拟环境了,参考图2.2。
图2.2 Pyenv结合Virtaulenvwrapper示范