一、Python基础介绍和发展史

python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。

python是一种面向对象,直译式的计算机程序语言,Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。


二、Python应用领域

1、云计算: 应用OpenStack

2、自动化:Saltstack、Ansible

3、系统运维: 运维人员必备语言

4、图形GUI: PyQT, WxPython,TkInte

5、WEB开发: 众多大型网站均为Python开发,Youtube,典型WEB框架有Django

6、科学运算:人工智能,典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas

7、金融行业:在金融工程领域,作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测。

三、编程语言

机器语言

优点是最底层,速度最快,缺点是最复杂,开发效率最低

|

汇编语言

优点是比较底层,速度最快,缺点是复杂,幵发效率最低

|

高级语言

编译型语言:执行速度快.不依赖语言环境运行,跨平台差

解  释  型:跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行

四、编译型语言

负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码。专业一点,就称为编译(Compile),而负责编译的程序自然就称为编译器(Compiler)。如果我们写的程序代码都包含在一个源文件中,那么通常编译之后就会直接生成一个可执行文件,我们就可以直接运行了。

但对于一个比较复杂的项目,为了方便管理,我们通常把代码分散在各个源文件中,作为不同的模块来组织。这时编译各个文件时就会生成目标文件(Objectfile)而不是前面说的可执行文件。一般一个源文件的编译都会对应一个目标文件。这些目标文件里的内容基本上已经是可执行代码了,但由于只是整个项目的一部分,所以我们还不能直接运行。待所有的源文件的编译都大功告成,我们就可以最后把这些半成品的目标文件“打包”成一个可执行文件了,这个工作由另一个程序负责完成,由于此过程好像是把包含可执行代码的目标文件连接装配起来,所以又称为链接(Link),而负责链接的程序就叫链接程序(Linker)。

五、解释型语言

打个比方:如果你打算预读一本外文书,而你不知道这么外语,那么你可以找一名翻译,给他足够的时间让他从头到尾把整本书翻译好,然后把书的母语版交给你阅读。这个过程就编译,或者你也立刻让这名翻译辅助你阅读,让他一句一句的给你翻译,如果你想往回看某个章节他也的重新给你翻译。

两种方式:前者就相当于编译型:一次把所有的代码转换成机器语言,然后写成可执行文件。而后者就相当于我们要的解释型:在程序运行的前一刻, 还只有源程序而没有可执行程序;而程每执行到资源程序的某一条执行,则会有一个称之为解释程序的外壳程序,将源代码转换成二进制代码以供执行.

总结:高级汇编语言的转换方式有两种:

编译型

解释型

把源代码编译成机器语言的可执行程序

执行可执行文件

用户调用解释器,执行源代码文件

优点:

1、程序执行时,不需要源代码,不依赖语言环境,因为执行的是机器码文件

2、执行速度快,因为源代码程序已经翻译成了是计算机可以直接理解的机器语言

优点:

1.天生跨平台,因为解释器已经做好了对不通平台的交互处理,用户写的源代码不需要再考虑平台差异性,一份源代码,所有的平台都可以执行

2、随时修改,立即见效,改完源代码后,直接运行效果查看

缺点

1、每次修改了源代码,需要重新编译,生成机器码文件

2、跨平台性不好,不同操作系统,调用底层的机器指令不同,需为不同平台生成不同的机器码文件

缺点:

1、运行效率低,所有的代码都要经过解释器执行,速度比编译型慢很多

2、代码是明文

六、Python解释器种类

CPython

当我们从Python官方网站下载并安装好Python2.7后,我们就直接获得了一个官方版本的解释器:CPython。

这个解释器是用C语言幵发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE

PyPy(速度最快)

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度

还有不常用的:PyPYJythonIronPython

七、Python优点

Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂.

开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期.

1、高级语言

当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节

2、可移植性

由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)

3、可扩展性

如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

4、可嵌入性

你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

八、Python缺点

1、速度慢

Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些.

2、代码无法加密

因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。

3、线程不能利用多CPU

GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的 工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于 GIL的存在,所以禁止多线程的并行执行。

九、Python安装部署

毫无疑问选择3.x版本

In summary : Python 2.x is legacy, Python 3.x is the present and future of the language!
Python 3.0 was released in 2008. The final 2.x version 2.7 release came out in mid-2010,
with a statement of extended support for this end-of-life release.
The 2.x branch will see no new major releases after that.
3.x is under active development and has already seen over five years of stable releases,
including version 3.3 in 2012,3.4 in 2014, and 3.5 in 2015.
This means that all recent standard library improvements, for example, are only available by default in Python 3.x.
开始安装:
安装pip3 需要安装openssl-devel
python3安装完以后  shell出现→(上下左右键盘)出现 [[
yum install gcc gcc-c++ -y
yum install readline-devel -y
yum -y install openssl-devel
wget https://mirrors.linyaohong.com/src/python/Python-3.5.2.tgz
tar zxf Python-3.5.2.tgz
cd Python-3.5.2
./configure --prefix=/usr/local/python3
make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
查看安装效果:
[root@test01 /usr/local/python3/bin]# /usr/local/python3/bin/python3 -V
Python 3.5.2
用python3命令进入python解释器
或者
修改系统默认Python版本:
#没修改之前
[root@test01 tools]# python -V
Python 2.7.5
#系统也是给/usr/bin/python做的软连接
[root@test01 tools]# ls -l /usr/bin/python*
-rwxr-xr-x. 1 root root 78 Oct 31 07:46 /usr/bin/pydoc
lrwxrwxrwx. 1 root root 7 Jan 7 22:22 /usr/bin/python -> python2
lrwxrwxrwx. 1 root root 9 Jan 7 22:22 /usr/bin/python2 -> python2.7
-rwxr-xr-x. 1 root root 7216 Oct 31 07:46 /usr/bin/python2.7
#删除之前2.7版本的软连接
rm -rf /usr/bin/python
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
[root@test01 tools]# python -V
Python 3.5.2
[root@test01 /usr/local/python3/bin]# pip3 -V
pip 8.1.1 from /usr/local/python3/lib/python3.5/site-packages (python 3.5)
#顺便把常用的pip也安装上做上软连接、省的以后麻烦
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
为防止yum出错修改yum使用的python版本:
从上面可以看出系统默认使用的为2.7版本
[root@test01 tools]# vim /usr/bin/yum
#!/usr/bin/python2.7
[root@test01 tools]# vim /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python2.7