1.编程语言介绍
1.1机器语言:直接用计算机能理解的二进制指令编写程序,直接控制硬件
优点:执行效率高
缺点:开发效率低,跨平台性差:因为离硬件近,贴近计算机硬件(CPU)针对某种
(CPU)所以,跨平台性差。
1.2汇编语言:用英文标签取代二进制指令编写程序,本质也是在直接控制硬件。
优点:开发效率比机器语言高
缺点:仍然没有改变直接操作硬件的本质,执行效率高,但是没有机器语言高
1.3高级语言:用人能理解的表达方式去编写程序,无需考虑硬件的操作细节
分为俩种:
编译型:类似于谷歌翻译,经过一次翻译,以后可以直接拿着翻译的结果去执行
优点:执行效率比解释型高
缺点:开发效率比解释型低
解释型:类似于同声传译,翻译官相当于解释器
执行效率:机器语言》汇编语言》高级语言(编译型》解释型)
开发效率:机器语言《汇编语言《高级语言(编译型《解释型)
跨平台性:机器语言《汇编语言《高级语言(编译型《解释型)
2.Python解释器介绍
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。
最新的TIOBE排行榜,Python赶超PHP占据第3, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。
Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。
目前Python主要应用领域:
#1. WEB开发——最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为完全主义者开发的高效率web框架)
#2. 网络编程——支持高并发的Twisted网络框架, py3引入的asyncio使异步编程变的非常简单
#3. 爬虫——爬虫领域,Python几乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥
#4. 云计算——目前最火最知名的云计算框架就是OpenStack,Python现在的火,很大一部分就是因为云计算
#5. 人工智能——谁会成为AI 和大数据时代的第一开发语言?这本已是一个不需要争论的问题。如果说三年前,Matlab、Scala、R、Java 和 Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明确了,特别是前两天 Facebook 开源了 PyTorch 之后,Python 作为 AI 时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅。
#6. 自动化运维——问问中国的每个运维人员,运维人员必须会的语言是什么?10个人相信会给你一个相同的答案,它的名字叫Python
#7. 金融分析——我个人之前在金融行业,10年的时候,我们公司写的好多分析程序、高频交易软件就是用的Python,到目前,Python是金融分析、量化交易领域里用的最多的语言
#8. 科学运算—— 你知道么,97年开始,NASA就在大量使用Python在进行各种复杂的科学运算,随着NumPy, SciPy, Matplotlib, Enthought librarys等众多程序库的开发,使的Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛
#9. 游戏开发——在网络游戏开发中Python也有很多应用。相比Lua or C++,Python 比 Lua 有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,与 Lua 相比,Python 更适合作为一种 Host 语言,即程序的入口点是在 Python 那一端会比较好,然后用 C/C++ 在非常必要的时候写一些扩展。Python 非常适合编写 1 万行以上的项目,而且能够很好地把网游项目的规模控制在 10 万行代码以内。另外据我所知,知名的游戏<文明> 就是用Python写的
Python在一些公司的应用:
# 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
# CIA: 美国中情局网站就是用Python开发的
# NASA: 美国航天局(NASA)大量使用Python进行数据分析和运算
# YouTube:世界上最大的视频网站YouTube就是用Python开发的
# Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
# Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
# Facebook:大量的基础库均通过Python实现的
# Redhat: 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
# 豆瓣: 公司几乎所有的业务均是通过Python开发的
# 知乎: 国内最大的问答社区,通过Python开发(国外Quora)
# 春雨医生:国内知名的在线医疗网站是用Python开发的
# 除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。
Python(解释器)的发展史:
# 1989年,Guido开始写Python语言的编译器。
# 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 (这里要解释清楚 为什么08年就出3.0,2010年反而又推出了2.7?是因为3.0不向下兼容2.0,导致大家都拒绝升级3.0,无奈官方只能推出2.7过渡版本)
# 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
# Python 3.6 - 2016-12-23 发布python3.6.0版
Python 有哪些种类?
我们现在知道了Python是一门解释型语言,代码想运行,必须通过解释器执行,Python的解释器本身也可以看作是个程序(翻译官司是哪国人不重要),这个程序是什么语言开发的呢? 答案是好几种语言? what? 因为Python有好几种解释器,分别基于不同语言开发,每个解释器特点不同,但都能正常运行我们的Python代码,下面分别来看下:
#CPython:CPython是使用最广且被的Python解释器。本教程以CPython为准。
当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
#IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
#PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
#Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
#IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
Python 2 or Python 3 ?
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.
Guido van Rossum (the original creator of the Python language) decided to clean up Python 2.x properly, with less regard for backwards compatibility than is the case for new releases in the 2.x range. The most drastic improvement is the better Unicode support (with all text strings being Unicode by default) as well as saner bytes/Unicode separation.
Besides, several aspects of the core language (such as print and exec being statements, integers using floor division) have been adjusted to be easier for newcomers to learn and to be more consistent with the rest of the language, and old cruft has been removed (for example, all classes are now new-style, "range()" returns a memory efficient iterable, not a list as in 2.x).
目前虽然业内很多企业还在大量使用Python2.6 or 2.7,因为旧项目几十万甚至上百万行的代码想快速升级到3.0不是件容易的事,但是大家在开发新项目时几乎都会使用3.x。
另外Python3 确实想比2.x做了很多的改进,直观点来讲,就像从XP升级到Win7的感觉一样,棒棒的。
Py2 和Py3的具体细节区别我们在以后课程中会慢慢深入。
3.安装Python解释器
3.1安装Python解释并且验证
打开官网https://www.python.org/鼠标移动到下图中的Downloads上,点击自己需要的版本
Windows
Mac
Oteher Platforms
按照自己的需求下载所对应的Python版本
以Windows10为例,安装Python3解释器
双击python-3.6.4-amd64.exe文件
到达如图:
一定要选择Add Python 3.6 to PATH
选择Customize installation
Chooes location features
点击next,如下图,可以修改默认安装路径,选择个性化功能。
安装完成后,右击微软图标
点击命令行提示符,进入控制台,输入Python,回车,得到如下图,则安装成功。
以Windows10为例,安装Python2解释器
双击python-2.7.14.msi文件
选择Install for all users
如下图,可以修改安装路径
添加环境变量,选择will be intall on local hard drive或者entire feature will be install on local hard drive,点击next,等待安装完成
安装完,进入控制台,输入Python,得到如下图,表示安装成功
但是,如果已经安装了Python3后,再安装Python2,则需要配置多版本共存,进入Python3或者Python2的安装目录,分别找到Python.exe,复制,在本文件夹内粘贴,分别修改为Python3.exe或者Python2.exe,则实现了Python多版本共存。如下图,则表示成功,
注意:在安装目录下找到python.exe,拷贝一份,命名为python2.exe或python3.exe,一定要保留原版,因为pip工具会调用它。
3.2设置环境变量
如果安装的时候没有选择添加环境变量,则需要手动添加
以Windows10为例,右击此电脑
,点击左侧的高级系统设置
,点击环境变量
在系统变量(S)中双击Path,进入
点击新建,添加Python3和Python2的安装路径以及Python3和Python2的Scripts路径,如下图,则表示成功
Win7添加环境变量和win10类似,但是添加时,稍有区别,类似于D:\python27;C:\a\a\c;E:\c\a
Mac\Linux添加环境变量:terminal
Vim/etc/profile
输入a或i或o进入编辑模式
移动光标到文件末,增加一行内容:
PATH=/usr/local/python27:$PATH
Export PATH
按ESC,输入:wq
重启终端
控制台C:\users\odlboy>pip –V看版本
控制台C:\user\oldboy\pip install requests安装第三方包
4.执行Python程序的俩种方式
1.交互式:输入指令,即时得到命令的执行结果,通常用来调试代码
2.命令行:python3 D:\test.txt
2.1注意:后缀名并不影响程序的执行,但是约定俗成是.py结尾
2.2运行Python程序经历3个阶段:
先启动Python的解释器
Python解释器将test.txt文件的内容读入内存(此时d的
Python解释器就像是一个文本编辑器)
Python解释器解释执行刚刚读入的内存代码
4.变量
1.什么是变量
量指的是记录事物的状态
变指的是事物的状态是可以改变的
2.为何要用变量
为了让计算机具备人的记忆事物状态的技能
3.如何用变量
3.1先定义
age(空格)=(空格)18
定义三大组成部分:
变量名:变量名应该能反映出事物的属性
=:把变量值绑定给变量名
变量值:就是事物的状态
规范的变量命名示范:
name = ‘egon’
age = 18
height = 180
sex = ‘male’
不规范的变量命名示范:
asdfsadfadf = 18(O)
3.2后引用
通过变量名引用值
强调:变量名是访问到值得唯一方式
3.3变量名的命名
大前提:变量名应该见名知义
语法规定:
1.变量名由字母、数字、下划线组成
2.不能以数字开头(不可纯数字)
可以下划线开头,但是下划线开头由特殊意义,最好不用
3.不能使用Python的关键字
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
命名风格:
纯小写加下划线:age_of_oldboy = 73(在Python中变量名的命名推荐使用该方式)
驼峰体:AgeOfOldboy = 73(在Python中类的命名推荐使用该方式)
3.4常量
Python语法中没有常量的概念,但是需要有这个概念,约定俗成默认纯大写命名常量,如AGE_OF_OLDBOY = 83,虽然可改,但是不要改。
3.5变量值具备三种特征
id:是变量值在内存中的唯一标识(根据内存地址计算而来,内存地址不同则id不同,内存地址相同则id相同)
type:不同类型的值用来记录不同的状态
值:
name = ‘egon’
id(name) 变量名是访问值的唯一方式
type(name)
salary = 3.1
id(salary)
type(salary)
level = 10
id(level)
type(level)
3.6内存管理
age = 18,age并不存储18这个值,只是指向18的内存地址
垃圾回收机制:引用计数
一个值绑定了变量名,有了使用可能;一个值没有绑定变量名,就是垃圾
引用计数增加:
age = 18 #18的引用计数为1
x = age #18的引用计数为2
引用计数减少:
del age #18的引用计数为1
x = 10 #18的引用计数为0
Python会自动扫描引用计数,自动释放18的内存占用
标记/清除
分代回收