目前咱们使用的Python 3.7.x的版本是在2018年发布的,Python的版本号分为三段,形如A.B.C。其中A表示大版本号,通常当总体重写,或出现不向后兼容的改变时,增长A;B表示功能更新,出现新功能时增长B;C表示小的改动(如修复了某个Bug),只要有修改就增长C。若是对Python的历史感兴趣,能够查看一篇名为《Python简史》的博文。html
Python的优势不少,简单的能够总结为如下几点。前端
Python的缺点主要集中在如下几点。python
目前Python在云基础设施、DevOps、网络爬虫开发、数据分析挖掘、机器学习等领域都有着普遍的应用,所以也产生了Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、图像识别和处理等一系列的职位。linux
能够在Python官方网站下载到Python的Windows安装程序(exe文件),须要注意的是若是在Windows 7环境下安装须要先安装Service Pack 1补丁包(能够经过一些工具软件自动安装系统补丁的功能来安装),安装过程建议勾选“Add Python 3.6 to PATH”(将Python 3.6添加到PATH环境变量)并选择自定义安装,在设置“Optional Features”界面最好将“pip”、“tcl/tk”、“Python test suite”等项所有勾选上。强烈建议使用自定义的安装路径并保证路径中没有中文。安装完成会看到“Setup was successful”的提示,可是在启动Python环境时可能会由于缺失一些动态连接库文件而致使Python解释器没法运行,常见的问题主要是api-ms-win-crt*.dll缺失以及更新DirectX以后致使某些动态连接库文件缺失,前者能够参照《api-ms-win-crt*.dll缺失缘由分析和解决方法》一文讲解的方法进行处理或者直接在微软官网下载Visual C++ Redistributable for Visual Studio 2015文件进行修复,后者能够下载一个DirectX修复工具进行修复。git
Linux环境自带了Python 2.x版本,可是若是要更新到3.x的版本,能够在Python的官方网站下载Python的源代码并经过源代码构建安装的方式进行安装,具体的步骤以下所示。github
安装依赖库(由于没有这些依赖库可能在源代码构件安装时由于缺失底层依赖库而失败)。sql
yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
下载Python源代码并解压缩到指定目录。shell
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
xz -d Python-3.7.3.tar.xz
tar -xvf Python-3.7.3.tar
切换至Python源代码目录并执行下面的命令进行配置和安装。macos
cd Python-3.7.3
./configure --prefix=/usr/local/python37 --enable-optimizations
make && make install
修改用户主目录下名为.bash_profile的文件,配置PATH环境变量并使其生效。编程
cd ~ vim .bash_profile
# ... 此处省略上面的代码 ... export PATH=$PATH:/usr/local/python37/bin # ... 此处省略下面的代码 ...
source .bash_profile
MacOS也是自带了Python 2.x版本的,能够经过Python的官方网站提供的安装文件(pkg文件)安装3.x的版本。默认安装完成后,能够经过在终端执行python命令来启动2.x版本的Python解释器,能够经过执行python3命令来启动3.x版本的Python解释器。
在终端或命令行提示符中键入下面的命令。
python --version
固然也能够先输入python进入交互式环境,再执行如下的代码检查Python的版本。
import sys
print(sys.version_info) print(sys.version)
能够用文本编辑工具(推荐使用Sublime、Atom、TextMate、VSCode等高级文本编辑工具)编写Python源代码并将其命名为hello.py保存起来,代码内容以下所示。
print('hello, world!')
切换到源代码所在的目录并执行下面的命令,看看屏幕上是否输出了"hello, world!"。
python hello.py
注释是编程语言的一个重要组成部分,用于在源代码中解释代码的做用从而加强程序的可读性和可维护性,固然也能够将源代码中不须要参与运行的代码段经过注释来去掉,这一点在调试程序的时候常常用到。注释在随源代码进入预处理器或编译时会被移除,不会在目标代码中保留也不会影响程序的执行结果。
"""
第一个Python程序 - hello, world! 向伟大的Dennis M. Ritchie先生致敬 Version: 0.1 Author: 骆昊 """ print('hello, world!') # print("你好,世界!") print('你好', '世界') print('hello', 'world', sep=', ', end='!') print('goodbye, world', end='!\n')
IDLE是安装Python环境时自带的集成开发工具,以下图所示。可是因为IDLE的用户体验并非那么好因此不多在实际开发中被采用。
IPython是一种基于Python的交互式解释器。相较于原生的Python Shell,IPython提供了更为强大的编辑和交互功能。能够经过Python的包管理工具pip安装IPython和Jupyter,具体的操做以下所示。
pip install ipython jupyter
或者
python -m pip install ipython jupyter
安装成功后,能够经过下面的ipython命令启动IPython,以下图所示。
固然咱们也能够经过Jupyter运行名为notebook的项目在浏览器窗口中进行交互式操做。
jupyter notebook
首先能够经过官方网站下载安装程序安装Sublime 3或Sublime 2。
安装包管理工具。经过快捷键Ctrl+`或者在View菜单中选择Show Console打开控制台,输入下面的代码。
import urllib.request,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib.request.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())
import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp)ifnotos.path.exists(ipp)elseNone;urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read());print('Please restart Sublime Text to finish installation')
安装插件。经过Preference菜单的Package Control或快捷键Ctrl+Shift+P打开命令面板,在面板中输入Install Package就能够找到安装插件的工具,而后再查找须要的插件。咱们推荐你们安装如下几个插件:
PyCharm的安装、配置和使用咱们在后面会进行介绍。
在Python交互环境中下面的代码查看结果并将内容翻译成中文。
import this
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 first 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!
学习使用turtle在屏幕上绘制图形。
import turtle
turtle.pensize(4) turtle.pencolor('red') turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.mainloop()