1.python语言介绍
1.1 介绍
编程语言的分类主要有一下几个维度,编译型和解释性;静态语言和动态语言;强类型语言和弱类型语言。
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python 是一种解释型语言:这意味着开发过程中没有了编译这个环节。在程序运行的前一刻,只有源码程序而没有可执行程序。而程序执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码。 容易移植。
Python 是动态语言:这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
Python 是强类型语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
1.2 Python的优缺点
1.2.1 优点
1 “优雅”“简单”“明确”。
2 开发效率高。
3 可移植性(避免使用依赖系统的性能)。
4 可扩展性。
6 可切入性
1.2.2 缺点
1.运行速度慢
2 代码不能加密
3 线程不能利用多CPU问题。
CIL即全局解释器锁(Global interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程是操作系统的原生线程。在Linux上为Pthread,在window上为 Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于CIL的存在,所以禁止多线程的并行执行。
1.3 Python的发展
- Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
- Python 本身也是由诸多其他语言发展而来的。这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。
- 像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。
- 现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。
- 1991年第一个Python编辑器诞生。使用C写的,并能够调用C语言库。从一出生,Python已经具有了:类,函数,异常处理,包含类和词典在内的核心数据类型,以及模块为基础的拓展结果。
- 1994年1.0 版本发布
- 2000年2.0版本发布
- 2008年3.0版本发布
1.4 python在一些知名企业的应用
谷歌:Google App Engine、code.google.com、google earch、谷歌爬虫、google广告等项目都在大量的使用python开发。
CIA:美国中情局网站使用python开发的。
NASA:美国航天局(NASA)大量使用python进行数据分析和运算。
YouTube:世界上最大的视屏网站。
Dropbox:美国最大的在线存储网站,全部使用Python实现,每天处理量在10亿个文件的上传和下载。
Instagram:美国最大的图片分享网社交网站,每天超过3千万张照片被分享,全部使用Python开发。
Facebook:最大的基础库均通过python实现。
Redhat:世界上最流行的linux发行版中的yum包管理工具就是用python开发的。
豆瓣:公司几乎所有的业务均是通过python开发。
知乎:国内最大的问答社区,通过python开发(国外Quora)。
除了以上之外,还有搜狐、金山、腾讯、盛大、易网、百度、阿里、淘宝、土豆、新浪、果壳等公司都在使用python完成各种各样的任务。
1.5 Python 特点
1.易于学习:**Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
2.易于阅读:**Python代码定义的更清晰。
3.易于维护:**Python的成功在于它的源代码是相当容易维护的。
4.一个广泛的标准库:**Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
5.互动模式:**互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
6.可移植:**基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
7.可扩展:**如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
8.数据库:**Python提供所有主要的商业数据库的接口。
9.GUI编程:**Python支持GUI可以创建和移植到许多系统调用。
10.可嵌入:** 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
1.6 学习python能干什么?
(1)web开发 Django/pyramid/Toprnado/Bottle/Flask/WebPy
(2)网络编程 Twisted/Requests/Scrapy/Paramiko
(3)科学运算 SciPy/Pandas/Ipython
(4)GUI的图形开发 wxPython/PyQT/Kivy
(5)自动化运维 OpenStack/Saltstack/Ansible/腾讯蓝鲸
1.7 python与运维自动化
运维会开发以后:
随着计算机应用领域的规模的增大,运维自动化已经不是一个新名词了、新技术了。自动化运维无非就是对传统运维进行改造和升级罢了,由于近几年的互联网和PC端的飞速发展,敏捷开发带来的业务频繁更新、上线、业务访问量的突发剧增对系统承载能力的巨大考验等,这些都给运维带来了极大的挑战,运维人员必须不断思考如何满足一下问题?
- 如何高效的适应业务的频繁更新,变更,上线,扩展?
- 如何在最低成本的前提下实现业务并发运算能力的可伸缩式扩展?
- 如何实现运维人员从被动处理故障到故障防御和故障高度自愈的转换?
- 如果通过不断优化运维流程、自动化工具来降低运维成本、人工参与度,最终实现无人运维?
运维人员如何在这场浪潮中生存下来?《普通运维人员就是秋后的蚂蚱》https://www.jianshu.com/p/b381d1b6b75d
运维会了开发能干什么?
(1)开发各种自动化工具,制定开发各种开源软件。
(2)帮助评估和优化业务技术架构
(3)开发公司的内部办公系统,CRM,网站等
(4)全栈工程师
2.Python解释器
当我们编写Python代码时,我们得到的是一个包含python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。
由于整个python语言从规范到解释器都是开源的,所以理论上,只要水平高,谁都可以开发解释器。
2.1 Cpython
当我们存Python官网上下载并安装好Python后,我们就获得了官方版的解释器:Cpython。这个解释器使用C语言写的。在命令行下运行Python就是启动了Cpython解释器。
2.2 Pypy
Pypy是另一个Python解释器,他的目标是执行速度。Pypy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著的python代码的执行效率
绝大多数Python代码都可以在Pypy下运行,但是Pypy和Cpython有一些是不同的,这就导致相同的Python代码 在两种和解释器下执行可能会有不同的结果。
2.3 shedskin
采用了一种新的办法,即“翻译”。它把python代码翻译成C++,然后再编译成pyd(windows下),so(*nix下)模块。这样在其它python代码中,可以简单的import 编译好的模块,非常高效、方便。
2.4 Psyco
是严格地在 Python 运行时进行操作的。也就是说,Python 源代码是通过 python 命令编译成字节码的,所用的方式和以前完全相同(除了为调用 Psyco 而添加的几个 import 语句和函数调用)。但是当 Python 解释器运行应用程序时,Psyco 会不时地检查,看是否能用一些专门的机器代码去替换常规的 Python 字节码操作。这种专门的编译和 Java 即时编译器所进行的操作非常类似(一般地说,至少是这样),并且是特定于体系结构的。到现在为止,Psyco 只可用于 i386 CPU 体系结构。Psyco 的妙处在于可以使用您一直在编写的 Python 代码(完全一样!),却可以让它运行得更快。
3 pytho开发环境搭建
Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到:
Python官网:https://www.python.org/
你可以在以下链接中下载 Python 的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。
Python文档下载地址:https://www.python.org/doc/
3.1 Windows下开发环境搭建
打开 WEB 浏览器访问https://www.python.org/downloads/windows/ 下载对应的软件包
两种选择,第一种系统选择;第二种自动故意安装,注意“选择环境变量,就后续不用添加“
我们选择自定义安装:
全部选择
安装到所有用户,并修改安装目录
正在安装
3.2 linux下开发环境搭建
python的不同版本各有差异,尤其是在2版本和3版本上变化巨大,不过在2版本即将退场。但是同一个大版本同版本在功能的实现方式上略有差异,这需要我们安装不同的版本来执行开发程序,现在我们来实现在linux上安装多个python版本。
(1)上传把并解压对应版本安装包
[root@bogon ~]# tar xf Python-3.7.3.tar.xz
[root@bogon Python-3.7.3]# yum install gcc gcc-c++ make zlib* -y [root@bogon Python-3.7.3]# yum install libffi-devel -y [root@bogon Python-3.7.3]# ./configure --prefix=/usr/local/python3 [root@bogon Python-3.7.3]# make [root@bogon Python-3.7.3]# make install
![1562559557563 1562559557563](https://img2020.cnblogs.com/blog/1274167/202003/1274167-20200323205535836-1107102149.png)
(3) 配置执行文件路径
[root@bogon Python-3.7.3]# cd /usr/bin [root@bogon bin]# mv /usr/bin/python /usr/bin/python2 [root@bogon bin]# ln -fs /usr/local/python3/bin/python3 /usr/bin/python3
(5)修改yum配置
[root@localhost ~]# vim /usr/bin/yum [root@localhost ~]# vim /usr/libexec/urlgrabber-ext-down
3.3 集成开发环境 PyCharm
3.3.1 windows下安装
PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统。
PyCharm 功能 : 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……
PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/ PyCharm 安装地址:http://www.runoob.com/w3cnote/pycharm-windows-install.html
![1562555852538 1562555852538](https://img2020.cnblogs.com/blog/1274167/202003/1274167-20200323210322722-1361362002.png)
安装
安装好之后,打开程序并配置完成
3.3.2 linux下安装
下载地址:https://www.jetbrains.com/pycharm/download/other.html
[root@localhost ~]# wget https://download.jetbrains.com/python/pycharm-professional-2018.3.7.tar.gz?_ga=2.211598423.353379605.1584669292-1103173413.1584669292 [root@localhost ~]# tar xvf pycharm-professional-2018.3.7.tar.gz?_ga=2.211598423.353379605.1584669292-1103173413.1584669292 -C /usr/local/src/ [root@localhost ~]# cd /usr/local/src/pycharm-2018.3.7/bin [root@localhost bin]# ./pycharm.sh [root@localhost bin]# ln -s /usr/local/src/pycharm-2018.3.7/bin/pycharm.sh /usr/sbin/pycharm
3.4 python 开发虚拟环境搭建
3.4.1 什么是python虚拟环境?
通俗的来讲,虚拟环境就是从电脑独立开辟出来的环境,相当于一个副本或备份,在这个环境你可以安装私有包,而且不会影响系统中安装的全局Python解释器。
3.4.2 为什么要用虚拟环境?
在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如Scrapy、Beautiful Soup等,但是可能每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要我们根据需求不断的更新或卸载相应的库。直接怼我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也相当混乱。如以下场景:
场景1:项目A需要某个框架1.0版本,项目B需要这个库的2.0版本。如果没有安装虚拟环境,那么当你使用这两个项目时,你就需要来回的卸载安装了,这样很容易就给你的项目带来莫名的错误; 场景2:公司之前的项目需要python2.7环境下运行,而你接手的项目需要在python3环境中运行,如果不使用虚拟环境,这这两个项目可能无法同时使用,使用python3则公司之前的项目可能无法运行,反正则新项目运行有麻烦。而如果虚拟环境可以分别为这两个项目配置不同的运行环境,这样两个项目就可以同时运行。
3.4.3 安装虚拟环境
windows上:
pip install virtualenv
![1563109058466 1563109058466](https://img2020.cnblogs.com/blog/1274167/202003/1274167-20200323211751076-2112533640.png)
注意:如果下载过慢可在用国内源下载: pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple virtualenv
[root@localhost etc]# yum install python-virtualenv
[root@localhost ~]# yum install python-pip [root@localhost ~]# pip install --upgrade pip [root@localhost etc]# pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple virtualenv
3.4.4 新建虚拟环境
virtualenv scrapytest 创建名为 scrapytest 的虚拟环境
virtualenv -p C:...(python安装目录) python.ext scrapytest
[root@localhost ~]# virtualenv py2 [root@localhost bin]# virtualenv -p /usr/local/bin/python3 py3
3.4.5 运行虚拟环境
在windows下:
cd scrapytestScripts source activate.bat activate.bat
在linux下:
[root@localhost bin]# source activate (py2) [root@localhost bin]# python
3.4.6 退出虚拟环境
windows下:
deactivate.bat
(py2) [root@localhost bin]# deactivate
3.4.7 虚拟环境管理工具
#安装工具包 [root@localhost ~]# pip install -i https://pypi.douban.com/simple/ virtualenvwrapper #查找文件 [root@localhost ~]# find / -name virtualenvwrapper.sh /usr/bin/virtualenvwrapper.sh #编辑环境变量 [root@localhost ~]# vim .bashrc
![1584624058310 1584624058310](https://img2020.cnblogs.com/blog/1274167/202003/1274167-20200323211755781-369619992.png)
#重启服务 [root@localhost ~]#reboot #测试 [root@localhost ~]# mkvirtualenv py2
![1584624555009 1584624555009](https://img2020.cnblogs.com/blog/1274167/202003/1274167-20200323211756476-1949174379.png)
(py2) [root@localhost ~]# deactivate [root@localhost ~]# mkvirtualenv --python=/usr/local/python3/bin/python3 py3
![1584624681358 1584624681358](https://img2020.cnblogs.com/blog/1274167/202003/1274167-20200323211757227-1103638576.png)