Python基础入门
在开发者社群流行一句话“人生苦短,我用Python”。看似一句戏言,其实十分恰当地说明了Python独特的魅力及其在开发者心目中的地位。
Python简史
要说近几年最受关注的编程语言,非Python莫属。这门“古老”的语言,之所以能够焕发新生,得益于人工智能的崛起。因为Python是人工智能的首选编程语言,这已是业界的共识,也是必然的选择。
Python是一门解释型的高级编程语言,创始人为荷兰人Guido van Rossum(吉多·范罗苏姆)。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节无聊的时间,决心开发一个简单易用的新语言,它介于C和Shell之间,同时吸收了ABC语言的优点。之所以起Python这个名字,是因为他喜欢看英国电视秀节目《蒙提·派森的飞行马戏团(Monty Python’s Flying Circus)》。
Python主要有以下几个特点。
- 初学者的语言:结构简单、语法优雅、易于阅读和维护。
- 跨平台:支持主流的操作系统,如Windows、Mac OS和Linux。
- 内置电池:极其丰富和强大的第三方库,让编程工作看起来更像是在“搭积木”。
- 胶水语言:就像使用胶水一样把用其他编程语言(尤其是C/C++)编写的模块黏合过来,让整个程序同时兼备其他语言的优点,起到了黏合剂的作用。
Python语言有什么缺点
Python有很多优点,并且每一个优点看起来都非常吸引人,这也是Python流行的主要原因。但是,Python并不是没有缺点的,最主要的缺点有以下几个:
- Python的执行速度不够快 Python的缺点主要是执行速度还不够快。当然,这并不是一个很严重的问题,一般情况下,我们不会拿Python语言与C/C++这样的语言进行直接比较。在Python语言的执行速度上,一方面,网络或磁盘的延迟会抵消部分Python本身消耗的时间;另一方面,因为Python特别容易和C结合使用,所以我们可以通过分离一部分需要优化速度的应用,将其转换为编译好的扩展,并在整个系统中使用Python脚本将这部分应用连接起来,以提高程序的整体效率。
- Python的GIL锁限制并发 Python的另一个大问题是,对多处理器支持不好。如果你接触Python的时间比较长,那就一定听说过GIL。GIL是指Python全局解释器锁(Global Interpreter Lock),当Python的默认解释器要执行字节码时,都需要先申请这个锁。这意味着,如果试图通过多线程扩展应用程序,将总是被这个全局解释器锁限制。当然,我们可以使用多进程的架构来提高程序的并发,也可以选择不同的Python实现来运行我们的程序。
- Python2与Python3不兼容 如果一个普通的软件或者库不能够做到向后兼容,它一定会被用户无情地抛弃。在Python中,一个大的槽点就是Python2与Python3不兼容。这给所有Python工程师带来了无数烦恼。
Python语言的应用场景
作为一种通用编程语言,Python的应用场景几乎是无限的。我们可以在任何场景使用Python,例如,从网站和游戏开发,到机器人和航天飞机控制等。从Python官网给出的例子来看,Python有以下几个主要的应用场景:
- Web开发 Python语言能够满足快速迭代的需求,非常适合互联网公司的Web开发应用场景。Python用作Web开发已有十多年的历史,在这个过程中,涌现出了很多优秀的Web开发框架,如Django、Pyramid、Bottle、Tornado、Flask和web2py。许多知名网站都是使用Python语言开发,如豆瓣、知乎、Instagram、Pinterest、Dropbox等。这一方面说明了Python作为Web开发的受欢迎程度,另一方面也说明Python语言用作Web开发经受住了大规模用户并发访问的考验。
- 用户图形接口(GUI) 我们可以使用Python标准库的tkInter模块进行GUI编程,也可以使用PyGObject、PyQt、PySide、Kivy、wxPython等编写GUI应用程序。使用Python程序可以轻松地开发出一个可移植的应用程序。例如,TKinter GUI可以不做任何改变就能运行在Windows、X Windows和Mac OS等平台上。
- 数值计算和科学计算 Python语言已经逐渐取代MATLAB成为科研人员最喜爱的数值计算和科学计算的编程语言。Python标准库虽然没有提供数值计算和科学计算的功能,但是,Python生态中有SciPy、NumPy和Pandas等非常好用的开源项目。
- 系统管理 Python简单易用、语法优美,特别适合系统管理的应用场景。著名的开源云计算平台OpenStack就是使用Python语言开发的。除此之外,Python生态中还有Ansible、Salt等自动化部署工具。这么多使用广泛、功能强大的系统管理工具都使用Python语言开发,也反映了Python语言非常适合系统管理的事实。
- 其他 Python的应用领域非常广泛,远比我们这里列出的要多得多,例如,可以使用pygame开发游戏,使用PIL库处理图片,使用NLTK包进行自然语言分析等。
搭建Python开发环境
“工欲善其器,必先利其器。”,在学习Python语言之前,必须先搭建好Python开发环境。 不管用什么工具开发Python程序,都必须安装Python的运行环境。由于Python是跨平台的,所以在安装之前,先要确定在哪一个操作系统平台上安装,目前最常用的是Windows、Mac OS X和Linux三大平台。 读者可以直接到Python的官网下载相应操作系统平台的Python安装包。https://www.python.org/downloads 进入下载页面,浏览器会根据不同的操作系统显示不同的Python安装包下载链接。
配置PATH环境变量
在安装完Python运行环境后,我们可以测试一下Python运行环境,不过如果在安装Python的过程中忘记了选中“Add Python 3.6 to PATH”复选框,那么默认情况下,Python安装程序是不会将Python安装目录添加到PATH环境变量的。这样一来,我们就无法在Windows命令行工具中的任何目录执行python命令了,必须进入Python的安装目录才可以使用python命令。 为了更方便地执行python命令,建议将Python安装目录添加到PATH环境变量中。 在Windows平台配置PATH环境变量的步骤如下: 在“环境变量”窗口有两个列表,上面的列表是为Windows当前登录用户设置环境变量,在这里设置的环境变量只对当前登录用户有效。下面的列表是对所有用户设置的环境变量,也就是说这些变量对所有的用户都有效。读者在哪里设置PATH环境变量都可以。如果在列表中没有PATH环境变量,点击“新建(N)…”按钮添加一个新的PATH环境变量。 如果仍然使用Python的默认安装路径,那么需要在PATH环境变量的最后添加如下的路径。 C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32 现在打开Windows命令行工具,执行python –version命令,说明Python已经安装成功了。
$ python --version
Python 3.11.2
pip实战
pip是一个用来安装和管理Python包的工具,是easy_install的替代品,如果读者使用的是Python2.7.9+或Python3.4+版本的Python,则已经内置了pip,无须安装直接使用即可。
pip之所以能够成为最流行的包管理工具,并不是因为它被Python官方作为默认的包管理器,而是因为它自身的诸多优点。pip的优点有:
- pip提供了丰富的功能,其竞争对手easy_install则只支持安装,没有提供卸载和显示已安装列表的功能;
- pip能够很好地支持虚拟环境;
- pip可以通过requirements.txt集中管理依赖;
- pip能够处理二进制格式(.whl);
- pip是先下载后安装,如果安装失败,也会清理干净,不会留下一个中间状态。
下面以Flask为例,来看一下pip几个常用的子命令。
-
查找安装包:
pip search flask
-
安装特定的安装包版本:
pip install flask==0.8
-
删除安装包:
pip uninstall Werkzeug
-
查看安装包的信息:
$ pip show flask Name: Flask Version: 0.12 Summary: A microframework based on Werkzeug, Jinja2 and good intentions Home-page: http://github.com/pallets/flask/ Author: Armin Ronacher Author-email: armin.ronacher@active-4.com License: BSD Location: /home/lmx/.pyenv/versions/2.7.13/lib/python2.7/site-packages Requires: click, Werkzeug, Jinja2, itsdangerous
-检查安装包的依赖是否完整:
$ pip check flask
Flask 0.12 requires Werkzeug, which is not installed.
- 查看已安装的安装包列表:
pip list
-
导出系统已安装的安装包列表到requirements文件:
pip freeze > requirements.txt
-
从requirements文件安装:
pip install -r requirements.txt
- 使用pip命令补全:
pip completion --bash >> ~/.profile $ source ~/.profile
加速pip安装的技巧
如果大家使用Python的时间比较长的话,会发现Python安装的一个问题,即pypi.python.org不是特别稳定,有时候会很慢,甚至处于完全不可用的状态。这个问题有什么好办法可以解决呢?
- 使用豆瓣或阿里云的源加速软件安装
访问pypi.python.org不稳定的主要原因是因为网络不稳定,如果我们从网络稳定的服务器下载安装包,问题就迎刃而解了。我们国内目前有多个pypi镜像,推荐使用豆瓣的镜像源或阿里的镜像源。如果要使用第三方的源,只需要在安装时,通过pip命令的-i选项指定镜像源即可。如下所示:
pip install -i https://pypi.douban.com/simple/ flask
安装Anaconda Python开发环境
开发一个完整的Python应用,光使用Python本身提供的模块是远远不够的,因此,需要使用大量第三方的模块。在发布Python应用时安装这些第三方模块是一件令人头痛的事,不过有了Anaconda,让这件事轻松不少。 Anaconda是一个集成的Python运行环境。除了包含Python本身的运行环境外,还集成了很多第三方模块,如本书后面要将的numpy、pandas、flask等模块都集成在了Anaconda中,也就是说,只要安装了Anaconda,这些模块都不需要安装了。
Anaconda的安装相当简单,首先进入Anaconda的下载页面,地址如下:https://www.anaconda.com/download Anaconda的下载页面也会根据用户当前使用的操作系统自动切换到相应的Anaconda安装包。Anaconda是跨平台的,支持Windows、Mac OS X和Linux。不管是哪个操作系统平台的安装包,下载直接安装即可。 Anaconda的安装包分为Python3.x和Python2.x两个版本。
如果计算机上已经安装了 Python,安装不会对你有任何影响。实际上,脚本和程序使用的默认 Python 是 Anaconda 附带的 Python。 完成安装后,如果你是在windows上操作,打开 Anaconda Prompt (或者 Mac 下的终端)将Anaconda Prompt统一称为“终端”。可以在终端或命令提示符中键入 conda list,以查看你安装的内容。 安装了 Anaconda 之后,就可以很方便的管理包了(安装,卸载,更新)。
安装包
在终端中键入:
conda install package_name
例如,要安装 pandas,在终端中输入:
conda install pandas
你还可以同时安装多个包。类似 conda install pandas numpy 的命令会同时安装所有这些包。还可以通过添加版本号(例如 conda install numpy=1.10)来指定所需的包版本。 conda 还会自动为你安装依赖项。例如,scipy 依赖于 numpy,因为它使用并需要 numpy。如果你只安装 scipy (conda install scipy),则 conda 还会安装 numpy(如果尚未安装的话)。
卸载包
在终端中键入 :
conda remove package_names
上面命令中的package_names是指你要卸载包的名称,例如你想卸载pandas包:conda remove pandas
更新包
在终端中键入:
conda update package_name
如果想更新环境中的所有包(这样做常常很有用),使用:conda update –all。
列出已安装的包
列出已安装的包
conda list
Conda创建和使用环境
- 查看 Python 版本:
python --version
- 创建环境:
conda create -n my_env python=3.7.0
新的开发环境会被默认安装在你 conda 目录下的 envs 文件目录下。
- 激活环境
activate my_env
- 列出所有的环境
conda info -e
当前激活的环境会标*。
- 切换到另一个环境
activate my_env
- 注销当前环境
deactivate
- 复制环境
conda create -n my_env --clone my_env_2
- 删除环境
conda remove -n my_env2 --all
第一个Python程序
下面编写第一个Python程序。这个程序定义了两个整数类型的变量n和m,并将两个变量相加,最后调用print函数输出这两个变量的和。 输入下面的Python代码。
n = 20
m = 30
print("n + m =",n + m)
运行Python程序
jupyter实战
jupyter就是以前的IPython Notebook,是一种新兴的交互式数据分析与记录工具。它通过浏览器访问本地或者远端的IPython进程,并利用浏览器的图形界面,增强IPython的可视化输出。jupyter定义了一种全新的文件格式,文件的后缀名是ipynb。ipynb文件包含了代码,用以说明每一步的计算和输出。也就是说,ipynb文件完整记录了计算过程中的所有相关信息,并且,能够支持图片、视频和公式等副文本格式,是科学计算、数据分析和编程教学的优秀工具。
正是由于jupyter丰富的可视化输出,其广泛应用于以下场景:
- 编程教学;
- 数据分析;
- 科学计算;
- 幻灯片演示。