Python基础2: 基础知识和使用
- 什么是python
- Python学习资料
- Python的使用
- pip, IPython, Jupyter
什么是Python
Python是一门简单而功能强大的编程语言,常用于日常工作脚本编写、网站搭建、简单程序开发等等。Python有以下特点:
- 语言简单。Python的语法十分便于人的理解,即使一段时间没有使用,你也不会忘记。
- 功能强大。Python语言自诞生起一直活跃于IT界和学术界当中,其基础语法虽然简单,但具有相当丰富的标准库和扩展库,使得其功能十分强大!无论是数据分析处理、大数据和机器学习、网站构建等,他都活跃在一线。作为现代化语言,Python是支持面向对象的语言(额,面向对象是啥?)。
- 解释性语言。Python作为一门脚本语言,可以进行动态的输入和交互,这便于用户边写边调试!
- 免费开源。作为十分强大的工具,Python是开源免费试用的!源代码是开放的!
- 可移植性。Python由于开源的特性,被广泛移植到各种平台中。你所编写的程序很多时候不需修改就能在各种系统中运行(Window、Linux、Mac、Android甚至你的游戏机。)
Python由于语言简易,扩展库丰富,尤其适用于快速的应用程序开发,对于日常文件快速处理、小型功能程序等都等都属于首选语言。现在很多流行的机器学习和大数据的方法都使用了Python作为语言, 随着所谓大数据和AI变热, Python成为了极度popular的语言.
但Python不是无敌的。Python作为解释性语言,其运行速度相对C/C++等编译性编程语言要慢。因此,作为大型程序(运算量大,处理数据极多等情况也是)开发时,Python并不合适(例如王者荣耀就不能用Python开发啦,但王者荣耀的数据分析就可以用Python进行分析)。很多计算量大的方法在python使用时实际是应用c/c++
进行底层编译后的库, python只是强大的胶水, 沟通底层库和人们的日常操作.
Python
的中文意思是蟒蛇,所以可以看到其很多图标是蛇~解释性语言我们也常叫脚本语言。
在C/C++等编译性语言中,需要先将源代码(我们写的代码)编译为计算机语言(就是二进制代码,我们平时双击的exe可执行文件就是经过编译后的文件)。当我们每次修改源代码,想测试一下,均需要对源代码进行编译,再测试,这就比较麻烦了。而且编译经常出错哦!
但是Python这类解释性语言,并不需要经过编译为二进制代码一步。你可以直接从源代码直接运行程序,这就十分方便你运行调试和移植程序了!
Python流行的有两个大版本:2.X和3.X,在很多系统中(如Mac和Linux)均自带Python2.X,但较新版本3.X功能更强大,而且在不停发展。2.X和3.X有一定的语法区别,这里使用旧版的2.X的(因为我没有仔细去学过3.X~~),有兴趣可以去看看2.X和3.X区别再进一步学习3.X版本。
Python的学习资料
Python的入门书籍有很多, 进阶和扩展的就更多了. 纷繁的入门书籍其实都差不多, 有讲故事一样慢慢讲的 (适合无编程基础新手), 有从语法细节分析展开的 (适合有编程基础, 转学python). 看了很多书, 最适合新手入门的是《简明Python教程》,该书原英文版为由 Swaroop C H 编写的《A Byte of Python》,被广泛用于美国大学的Python入门。。
- 该英文版可以在线阅读:http://python.swaroopch.com/; 其源代码托管在Github:https://github.com/swaroopch/byte-of-python
- 该书2005年由沈洁元将1.2版引入国内,译名为《简明Python教程》,主要针对Python 2.X版语法。该书具有网页版 及Markdown版, 一般使用电子版.
- 2017年,漠伦基于4.0版重新翻译,主要针对Python 3.X版语法,新版教程可以在gitbook)中查看. 最新版可从其个人网站查看: https://bop.mol.uno/
- 参考书下载地址: https://pan.baidu.com/s/1bper3Mv. 本课程主要针对老式Python2.X版本,因此请下载旧版本。另外提供打印版,便于打印出来学习。
《简明Python教程》是真的简, 有心思看的话一天就能看完, 毫无编程基础的估计一周也能掌握好. 看完《简明Python教程》掌握了基础后可以选择其他入门书籍进行进一步的学习,例如《Python基础教程》、Python编程:从入门到实践、深入 Python :Dive Into Python 中文版等。参数书中带有《Python参考手册》, 这是本不错的查阅参考书。
更多的教程, 可以参考知乎: Python教程
官方参考资料和文档也是不错的学习资料, 适合查阅和深入学习:
非官方的参考手册还有: 在线手册中心, 收集整理了大量 Python 流行技术文档和教程.
Python入门网上教程
这里有些网站可以去学习和使用:
- Codecademy, 一个有教程有逐步操作的网上学习网站, 内有大量课程. 全英文, 你需要英文先加强.
- w3cschool的Python教程与Python3教程 (w3cschool是个不错的资料查询网站, 尤其是HTML等的资料. 其编程入门教程和编程课程 涵盖了多种语言. 下载其App后可以下载离线查看教程还是不错的).
- 菜鸟教程网: Python基础教程, Python3版本.
- 廖雪峰的Python3教程
- 莫烦PYTHON (配有视频讲解, 但内容比较浅显)
- TwoWater的Python入门教程: 草根学Python (基于Py3.6)
- 网易云课堂: Python轻松入门
- FenBy的Python教程
其实资料很多, 对于入门, 看熟简明基础教程, 再上机多练习就足够了!
随后, 可以找一个详细一点的教程进行深入点的学习!
有很多知识点, 是要在实践中慢慢掌握的!
python的使用
在上一篇 Python基础1: 安装程序与环境 中已经介绍了基础的Python安装和调用 (包括安装Shell以及编辑器), 应该了解到运行Python有两种基本模式: 交互模式
和源文件运行
, 在基于ipython的Jupyter的帮助下, 还可以实现代码块运行
以及网页应用运行
, 这些都是后话了.
-
交互模式 : 在命令行执行
python
命令就会进入交互模式, 输入代码回车获得结果. IDLE打开的默认模式也是交互模式, 适合于简单的调试. 使用ipython
可以获得更好的交互模式体验, 包括补全、查询等等。 -
源文件运行 : 在命令行执行
python 源文件.py
就可以执行源文件的内容. 这个被执行的源文件也可叫主程序
, 他可以调用其他的包和模块(其他py文件)来实现更为复杂的功能. 在IDLE内新建或打开源文件, 然后输入代码, 保存文件后, 在菜单Run
的Run Module
(或按F5
) 就可以执行源文件, 结果输出在交互界面的输出处. 注意这种方式运行源文件会重启IDLE的shell, 之前保存的变量等会被清空.
Jupyter直接显示Matplotlib图片结果
- IDLE还有很多功能, 例如支持补全, 调用提示, 回顾命令, Debug模式, 堆栈查看, 类查看, 内容查找,模块运行,重启shell等等. 但不建议过多学习其使用, 因为你最后都会选择别的工具代替他.
- 使用IDLE进行交互要比直接python命令要强大, 例如支持按
tab
键补全输入, 而python命令进入交互则不支持.ipython
支持补全, 还有更方便的查看历史(IDLE需要alt+p/n
). 如果只是简单的交互命令, ipython > IDLE > python.- 如果运行一段代码,
Jupyter Notebook
或类似IDE(Spyder或VS Code)是不错的选择;ipython
也可以, 但不太好改内容;idle
更弱, 或者需要新建文件来运行.- 如果测试源文件, IDE是不错的选择(包括VS Code, IDLE等), 直接用命令行来测试也是可以的
python 源文件.py
或ipython 源文件.py
. 但如果输出为图片, 则VS Code
,Spyder
等使用Jupyter
效果更佳.- 如果输出为图片查看, 基于Jupyter的效果会更佳 (如Notebook, VSCode, Spyder, IPython QTconsole等), IDLE无法显示, 命令行(python/ipython)也无法显示.
pip, ipython, jupyter
上面提到了多次ipython
和Jupyter
, 这里就介绍安装和简单的使用. 更复习的使用需要另外的资料. 先介绍pip
, ipython
, jupyter
分别是什么.
-
pip
: 库自动安装工具. python附带的一个工具, 在命令行下执行, 可以实现模块的安装与卸载. 十分重要的工具. python之所以强大, 是因为有很多工具(武器), 而这些工具哪里来的呢? 一般需要额外安装. 手动安装太麻烦了, python社区提供了PyPI 这个工具库, 里面有大量开发者上传的模块可供使用. 而pip
则是帮助你从这个库中进行检索和安装的工具. -
IPython
:基于python的增强的交互式解释器, 提供比原python交互模式更强大的功能, 如shell交互命令,?
用法, 自动补全等. 有了ipython, 谁用python啊. ipython还提供复杂的并行与分配计算结构, 使用jupyter内核与其他应用进行通信交互. -
Jupyter
: Jupyter原来是IPython项目的一部分, 名字起源于早期支持的三种核心语言Julia, Python, R
. 后来抽离出来作为更大的项目, 支持几十种语言环境, 其核心是通过一个内核运行解释器, 并用该核心和多个前端(其他应用)进行通信, 增强了交互性和并行性. 现在Jupyter更多地用于指代这个核心.-
Jupyter Notebook
是一个Web应用的交互式笔记本, 基于Jupyter核心, 之前也叫ipython notebook
, 现已基本用前者. -
JupyterLab
是Notebook的下一代产品, 功能比Notebook更强大. 现仍处于beta版. 主要支持多窗口, 支持拖动Cell, 支持打开py
文件. -
Jupyter QtConsole
是IPython的交互模式控制台, 使用交互命令和基于QT的图形界面, 类似于IPython+IDLE的结合, 支持显示图片. 一般很少用.
-
pip的安装
在默认情况下, pip已被安装 (Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具)。在命令行输入pip -V
可以查看版本(pip不能运行但python能运行时, 可以尝试python -m pip -V
, 如果依然不能查看pip版本号, 那么可能pip没有安装或者C:\Python27\Scripts
没有加入到搜索路径(环境变量Path
).
- 从头安装
pip
: 下载https://bootstrap.pypa.io/get-pip.py, 然后python get-pip.py
即可. (ubuntu系统可以sudo apt-get install python-pip
). - py2和3对应的是pip2和pip3, 而
pip
则对应机器上默认的python版本(2或3). - 安装包: 使用
pip install 包名
来自动搜索并安装python包.
pip install SomePackage # 最新版本
pip install SomePackage==1.0.4 # 指定版本
pip install 'SomePackage>=1.0.4' # 最小版本
- 搜索包: 使用
pip search SomePackage
搜索包, 可以输入包名部分内容, 找到合适的包后再安装. - 升级包:
pip install --upgrade SomePackage
- 卸载包:
pip uninstall SomePackage
- 升级pip自身 :
pip install -U pip
或python -m pip install -U pip
或easy_install --upgrade pip
- 其他功能: 显示安装包信息用
pip show
(指定包使用pip show -f SomePackage
, 列出已安装包用pip list
, 查看可升级的包用pip list -o
, 查看pip版本用pip -v
或pip --version
.
试一试: 安装几个常用的基础包:
numpy
,scipy
,pandas
,matplotlib
ipython和jupyter的安装
## 安装ipython和jupyter, 中间空格隔开可以同时装多个包
pip install ipython jupyter
## 待下载安装完成......
## 测试ipython, 输入exit或者按 ctrl+C 退出交互模式
ipython
## 测试jupyter notebook
jupyter notebook
## 如果没有在浏览器弹出notebook, 请在浏览器输入以下网址:
## localhost:8888
## 8888是使用的端口, 在多次使用notebook时端口号会递增, 根据实际情况调用
运行ipython
成功运行ipython
后界面如上所述. ipython
究竟有什么好呢? 可以在里面输入几个print "Hello World"
,a=123*456
之类的命令.
- 按
上
,下
键可以翻看之前输出过的历史命令
, 方便回溯和修改; - 先输入
pr
, 然后按Tab
键, 会自动补出print
. 这叫命令补全
, 加速输入. - 如上面的图,建立变量
a="Hi"
,随后输入a.
再按tab
, 列出一大堆可选的方法(可用上下左右键选择), 这种功能叫调用提示
. 这些列出来的东西其实是变量a的属性
和方法
(相当于其所拥有的工具箱). - 输入
a?
, (如果存在a), 可以看到关于a的帮助. - 输入
%magic
, 可以看到魔法命令介绍. 具体是啥, 不需理会..入门时很少用.
好了, 以后使用 命令行+ipython 代替IDLE进行交互吧!
运行Jupyter Notebook
运行Notebook可以使用jupyter notebook
, 也可以使用jupyter-notebook
. 成功打开后如下图, 并会自动打开浏览器转入到notebook. Window安装的话没有jupyterlab
(可以使用Anaconda
来安装吧). Notebook的使用以后再介绍了.
注意 : Windows里需要
Shift+右键
打开命令行窗口(dos窗口), 再输入该命令. 经测试使用Git for Windows
运行会报错如下, 同编码有关.
File "c:\python27\lib\site-packages\traitlets\config\application.py", line 377, in print_subcommands
print(os.linesep.join(lines))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 4: ordinal not in range(128)
Jupyter Notebook
在浏览器可以看到Notebook类似于上图. 其中一个框内可以输入多行代码, 按Ctrl+Enter
或按上面的Run
来运行一段代码. 这种输入一段代码的框称为Cell
, Cell是运行代码块的单元. 按+
号可以添加多个Cell. 更多Notebook的使用请自行探索或参看别的教程.
试一试 : 如果安装了
matplotlib
模块, 可以试试输入以下代码运行:
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot([1,2,3,4])
plt.show() # show figure
总结
- python是易学而强大的脚本语言.
- python有两种主要运行模式: 交互模式和源文件运行模式.
- 了解IDLE的使用
- 了解
pip
的使用 - 学会使用
ipython
进行交互模式操作, 熟练使用: 历史回顾, 命令补全, 调用提示功能. - 学会打开
Jupyter Notebook
, 并学会使用Cell
来调试代码块.