Python--1 初识
1.1 Python简介
Python[1] (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,python的创始人为吉多·范罗苏姆(Guido van Rossum),Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
现在,全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种。如果你听说过TIOBE排行榜,你就能知道编程语言的大致流行程度。这是最近10年最常用的10种编程语言的变化图:
2018年9月编程语言排行榜:https://www.tiobe.com/tiobe-index/
和人类一样,计算机使用多种语言来沟通,这里所说的语言就是编程语言。简单地说,一种编程语言就是一种特定的与计算机交谈的方式,这种方式使用计算机和人都能理解的指令。
有些编程语言以人名命名(如Ada和Pascal),有些采用简单的首字母缩写(如BASIC和FORTRAN),甚至还有些以电视剧命名,如Python。是的,Python编程语言的名字来自电视剧《蒙提• 派森的飞行马戏团》,而不是大蟒蛇。
《蒙提 • 派森的飞行马戏团》(Monty Python’s Flying Circus)是英国20世纪70年代首播的电视喜剧,直到今天仍受某些观众喜爱。Python的名字就是从这里来的 。
1.2 Python应用
- 谷歌:Google App Engine、code.google.com、Google earth、谷歌爬虫、Google广告等项目大量使用Python开发
- CIA:美国中央情报局网站使用Pythobn开发
- NASA:美国航天局大量使用Python开发的
- YouTube:世界上最大的视频网站,使用Python开发
- Dropbox:美国最大的在线云存储网站,全部使用Python开发,每天网站处理10亿个文件的上传和下载
- Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用Python开发
- Facebook:大量的基础库均通过python开发
- RedHat:yum包管理工具是通过python开发
- 豆瓣:公司几乎所有业务都是通过python开发
- 知乎:国内最大的问答社区,通过python开发
- 春雨医生:国内著名的在线医疗网站使用python开发
以及搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝、土豆、新浪、果壳等都在使用Python完成各种任务
python擅长的领域
- web开发
- Django、pyramid、Tornadp、Bottle、Flask、WebPy
- 网络编程
- Twisted、Requests、Scrapy、Paramiko
- 科学运算
- SciPy、Pandas、ipython
- GUI图形开发
- wxPython、PyQT、Kivy
- 运维自动化
- OpenStack、SaltStack、Ansible、腾讯蓝鲸
1.3 为什么学Python
Python特点
为什么是Python而不是其他语言?
C 和 Python、Java、C#等
C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作
其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行
Python 和 C Python这门语言是由C开发而来
对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
对于速度:Python的运行速度相较与C,绝逼是慢了
Python 和 Java、C#等
对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
对于速度:Python在速度上可能稍显逊色
所以,Python和其他语言没有什么本质区别,其他区别在于:擅长某领域、人才丰富、先入为主。
Python的种类
- Cpython
Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。 - Jyhton
Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。 - IronPython
Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似) - PyPy(特殊)
Python实现的Python,将Python的字节码字节码再编译成机器码。
学Python有没有前途?
运维会了开发后可以做什么?
- 帮助公司开发各种自动化工具,定制开发各种开源软件
- 帮助评估和优化业务技术架构
- 开发公司的内部办公系统、CRM、网站等
- 做个全栈工程师,全栈就是指什么都能做的样子
目前市面上主流的Python职位:
1.Python开发工程师
主要负责WEB开发、后端开发
2.大数据分析和数据挖掘
主要使用Python进行爬虫开发、数据清洗、机器学习/数据挖掘/信息检索/自然语言处理/文本分类与聚类等
3.金融自动化交易
量化交易策略的开发,以及程序化实现,开发特定的金融工程工具,对公司的研究和交易提供支持;
4.自动化开发工程师
开发公司自动化运维平台,提高运维自动化水平,降低公司IT运营成本
5.自动化测试工程师
开发自动化测试框架,测试工具及脚本,负责自动化框架的持续性优化和改进;编写测试计划、测试用例,并按照测试计划及测试步骤对产品进行自动化测试;
6.网络安全工程师
Python是众多的白帽子都非常喜欢的语言,有很多的安全工具就是用Python开发的。
1.4 Python发展史
- 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。
- 1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
- Granddaddy of Python web frameworks, Zope 1 was released in 1999
- Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.
- Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础
- Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生
- Python 2.5 - September 19, 2006
- Python 2.6 - October 1, 2008
- Python 2.7 - July 3, 2010
- In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
- Python 3.0 - December 3, 2008
- Python 3.1 - June 27, 2009
- Python 3.2 - February 20, 2011
- Python 3.3 - September 29, 2012
- Python 3.4 - March 16, 2014
- Python 3.5 - September 13, 2015
1.5 Python安装
目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。由于3.x版越来越普及,我们的教程将以最新的Python 3.6版本为基础。请确保你的电脑上安装的Python版本是最新的3.6.x,这样,你才能无痛学习这个教程。
安装Python相当简单。下面我们列举在Windows 7、苹果OS X,还有Ubuntu上的安装步骤。在安装Python的同时你也会安装IDLE程序的快捷方式,它是用来写Python程序的集成开发环境。
版本选择:
python 2 vs 3
- 默认支持中文
- 不兼容2.x
- 核心语法调整,更易学
- 新特性默认只在3.x上有
1.5.1 在Mac上安装Python
如果你正在使用Mac,系统是OS X 10.8~10.10,那么系统自带的Python版本是2.7。要安装最新的Python 3.6,有两个方法:
方法一:从Python官网下载Python 3.6的安装程序(网速慢的同学请移步国内镜像),双击运行并安装;
方法二:如果安装了Homebrew,直接通过命令brew install python3安装即可。
1.5.2 在Windows上安装Python
首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.5对应的64位安装程序或32位安装程序(网速慢的同学请移步国内镜像),然后,运行下载的EXE安装包:
特别要注意勾上Add Python 3.5 to PATH,然后点“Install Now”即可完成安装。
1.5.3 Unix & Linux 平台安装 Python
以下为在Unix & Linux 平台上安装 Python 的简单步骤:
- 打开WEB浏览器访问http://www.python.org/download/
- 选择使用于Unix/Linux的源码压缩包。
- 下载及解压压缩包。
如果你需要自定义一些选项修改Modules/Setup
执行 ./configure 脚本
make
make install
执行以上操作后,Python会安装在 /usr/local/bin 目录中,Python库安装在/usr/local/lib/pythonXX,XX为你使用的Python的版本号。
Linux 安装python:本文CentOS 7.3 安装python3.6
CentOS 7.3自带的python版本是2.7.5
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 [root@localhost Python-3.6.0]# python -V 2 3 Python 2.7.5 4 5 [root@localhost ~]# cat /etc/centos-release 6 7 CentOS Linux release 7.3.1611 (Core) 8 9 [root@localhost ~]# uname -r 10 11 3.10.0-514.el7.x86_64 12 13 安装python3.6可能使用的依赖 14 15 [root@localhost ~]# yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel -y 16 17 下载python3.6编译安装 18 19 到python官网下载https://www.python.org 20 21 下载最新版源码,使用make altinstall,如果使用make install,在系统中将会有两个不同版本的Python在/usr/bin/目录中。这将会导致很多问题,而且不好处理。 22 23 [root@localhost ~]# clear 24 25 [root@localhost ~]# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz 26 27 [root@localhost ~]# ll Python-3.6.0.tgz 28 29 -rw-r--r--. 1 root root 22256403 12月 23 10:24 Python-3.6.0.tgz 30 31 [root@localhost ~]# tar xf Python-3.6.0.tgz -C /usr/local/src/ 32 33 [root@localhost ~]# cd /usr/local/src/Python-3.6.0/ 34 35 把Python3.6安装到 /usr/local 目录 36 37 [root@localhost Python-3.6.0]# yum install gcc gcc-c++ make -y 38 39 [root@localhost Python-3.6.0]# ./configure --prefix=/usr/local 40 41 [root@localhost Python-3.6.0]# make 42 43 [root@localhost Python-3.6.0]# make altinstall 44 45 46 47 python3.6程序的执行文件:/usr/local/bin/python3.6 48 49 python3.6应用程序目录:/usr/local/lib/python3.6 50 51 pip3的执行文件:/usr/local/bin/pip3.6 52 53 pyenv3的执行文件:/usr/local/bin/pyenv-3.6 54 55 56 57 更改/usr/bin/python链接 58 59 [root@localhost Python-3.6.0]# cd /usr/bin/ 60 61 [root@localhost bin]# mv python{,.bak} 62 63 [root@localhost bin]# ln -sv /usr/local/bin/python3.6 /usr/bin/python 64 65 "/usr/bin/python" -> "/usr/local/bin/python3.6" 66 67 [root@localhost bin]# ln -sv /usr/local/bin/python3.6 /usr/bin/python3 68 69 "/usr/bin/python3" -> "/usr/local/bin/python3.6" 70 71 72 73 更改yum脚本的python依赖 74 75 [root@localhost bin]# vim /usr/bin/yum 76 77 更改文件头为 78 79 #!/usr/bin/python 改为 #!/usr/bin/python2 80 81 82 83 修改gnome-tweak-tool配置文件 84 85 # vi /usr/bin/gnome-tweak-tool 86 87 #!/usr/bin/python 改为 #!/usr/bin/python2 88 89 #本文迷你版,没有此文件 90 91 92 修改urlgrabber配置文件 93 94 # vi /usr/libexec/urlgrabber-ext-down 95 96 #!/usr/bin/python 改为 #!/usr/bin/python2 97 98 99 100 [root@localhost bin]# python -V 101 102 Python 3.6.0
1.6 Python运行
1.6.1 交互式解释器
可以通过命令行窗口进入python并开在交互式解释器中开始编写Python代码。
你可以在Unix,DOS或任何其他提供了命令行或者shell的系统进行python编码工作。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 $python # Unix/Linux 2 [root@localhost ~]# python 3 Python 3.6.0 (default, Apr 1 2017, 22:49:15) 4 [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux 5 Type "help", "copyright", "credits" or "license" for more information. 6 >>> print ("hello world") 7 hello world 8 >>> exit() 9 10 C:>python # Windows/DOS 11 Microsoft Windows [版本 10.0.14393] 12 (c) 2016 Microsoft Corporation。保留所有权利。 13 14 C:\Users\admin>python 15 Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32 16 Type "help", "copyright", "credits" or "license" for more information. 17 >>> print("hello world") 18 hello world 19 >>> exit()
以下为Python命令行参数:
选项 |
描述 |
-d |
在解析时显示调试信息 |
-O |
生成优化代码 ( .pyo 文件 ) |
-S |
启动时不引入查找Python路径的位置 |
-v |
输出Python版本号 |
-X |
从 1.6版本之后基于内建的异常(仅仅用于字符串)已过时。 |
-c cmd |
执行 Python 脚本,并将运行结果作为 cmd 字符串。 |
file |
在给定的python文件执行python脚本。 |
1.6.2 命令行脚本
在你的应用程序中通过引入解释器可以在命令行中执行Python脚本,如下所示:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 $python script.py # Unix/Linux 2 3 或者 4 5 ./script.py # Unix/Linux 6 7 或者 8 9 C:>python script.py # Windows/DOS 10 11 注意:在执行脚本时,请检查脚本是否有可执行权限。 12 13 [root@localhost ~]# python 1.py 14 15 hello world
1.6.3 集成开发环境
您可以使用图形用户界面(GUI)环境来编写及运行Python代码。以下推荐各个平台上使用的IDE:
Unix: IDLE 是 UNIX 上最早的 Python IDE 。
Windows: PythonWin 是一个 Python 集成开发环境,在许多方面都比 IDE 优秀
Macintosh: Python 的 Mac 可以使用 IDLE IDE,你可以在网站上下载对应MAC的IDLE 。
PyCharm
PyCharm是由JetBrains打造的一款Python IDE。
PyCharm具备一般 Python IDE 的功能,比如:调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等。
另外,PyCharm还提供了一些很好的功能用于Django开发,同时支持Google App Engine,更酷的是,PyCharm支持IronPython。
PyCharm 官方下载地址:http://www.jetbrains.com/pycharm/download/
效果图查看:
Sublime Text
该软件收费,但支持永久试用。
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。
Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。
Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。
使用Sublime Text 插件扩展功能,你可以轻松的打造一款不错的Python IDE,以下推荐几款插件(你可以找到更多):
CodeIntel:自动补全+成员/方法提示(强烈推荐)
SublimeREPL:用于运行和调试一些需要交互的程序(E.G. 使用了Input()的程序)
Bracket Highlighter:括号匹配及高亮
SublimeLinter:代码pep8格式检查
CentOS 7.3 安装Sublime Text 3
1、下载软件
由于不是Ubuntu系统,所以不要点击Ubuntu的链接,点击“tarball”的下载链接,下载tar.bz2格式的压缩包
2、解压
[root@localhost ~]# ll sublime_text_3_build_3126_x64.tar.bz2
-rw-r--r--. 1 root root 9313954 4月 1 23:09 sublime_text_3_build_3126_x64.tar.bz2
[root@localhost ~]# tar xf sublime_text_3_build_3126_x64.tar.bz2 -C /usr/local
3、测试
sublime_text需要图形界面支持,安装图形界面
[root@localhost ~]# yum group install "GNOME 桌面"
[root@localhost ~]# systemctl set-default graphical.target
[root@localhost ~]# reboot
下面在xshel上测试
[root@localhost ~]# export DISPLAY=192.168.95.1:0.0
[root@localhost ~]# xhost +
[root@localhost ~]# /usr/local/sublime_text_3/sublime_text
4、配置快捷菜单
复制默认的快捷设置文件到/usr/share/applications/目录下("/usr/local/sublime_text_3"修改为你自己的sublime安装路径)
[root@localhost ~]# cp /usr/local/sublime_text_3/sublime_text.desktop /usr/share/applications/
编辑默认的设置文件
把红框内容修改为你自己的文件目录,保存退出
脚本执行注意事项:
1、未指定解释器,可以使用python 1.py 执行
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 [root@localhost ~]# cat 1.py 2 3 print("hello world") 4 5 [root@localhost ~]# python 1.py 6 7 hello world
2、脚本编写方法
本文以Linux为例
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 [root@localhost ~]# vim 2.py 2 3 #!/usr/bin/python 4 5 print("hello world") 6 7 [root@localhost ~]# chmod +x 2.py 8 9 [root@localhost ~]# ./2.py 10 11 hello world 12 13 14 15 或者 16 17 [root@localhost ~]# vim 3.py 18 19 20 21 #!/usr/bin/env python 22 23 print("hello world") 24 25 [root@localhost ~]# ./3.py 26 27 hello world
1.7 Python注释
1、python单行注释符号(#)
井号(#)常被用作单行注释符号,在代码中使用#时,它右边的任何数据都会被忽略,当做是注释。
print(1) #输出1
#号右边的内容在执行的时候是不会被输出的。
2、批量、多行注释符号
在python中也会有注释有很多行的时候,这种情况下就需要批量多行注释符了。多行注释是用三引号''' '''包含的,例如
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 ''' 2 我是多行注释,可以写很多很多行的功能说明 3 这就是我牛X指出 4 5 哈哈哈。。。 6 ''' 7 8 ''' 9 下面的代码完成 ,打印一首诗 10 名字叫做:春江花月夜 11 作者,忘了 12 '''
3、python中文注释方法
Python2中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就行了。
注意:Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。
比如:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 [root@localhost ~]# cat 3.py 2 3 #!/usr/bin/env python 4 5 print("hello world") 6 7 print("欢迎学习pytho") 8 9 [root@localhost ~]# ./3.py 10 11 hello world 12 13 欢迎学习pytho