python介绍
python的创始⼈为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决⼼
开发⼀个新的脚本解释程序,作为ABC语⾔的⼀种继承。
最新的TIOBE排⾏榜,Python已经占据世界第四名的位置, Python崇尚优美、清晰、简单,是⼀个优秀并⼴泛使⽤的语⾔。
由上图可⻅,Python整体呈上升趋势,反映出Python应⽤越来越⼴泛并且也逐渐得到业内的认可!!! Python可以应⽤于众多领域,如:数据分析、组件集成、⽹络服务、图像处理、数值计算和科学计算等众多领域。⽬前业内⼏乎所有 ⼤中型互联⽹企业都在使⽤Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、⾖瓣、知乎、Google、Yahoo!、 Facebook、NASA、百度、腾讯、汽⻋之家、美团等。
⽬前Python主要应⽤领域:
云计算: 云计算最⽕的语⾔, 典型应⽤OpenStack
WEB开发: 众多优秀的WEB框架,众多⼤型⽹站均为Python开发,Youtube, Dropbox, ⾖瓣。。。, 典型WEB框架有Django
科学运算、⼈⼯智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
系统运维: 运维⼈员必备语⾔
⾦融:量化交易,⾦融分析,在⾦融⼯程领域,Python不但在⽤,且⽤的最多,⽽且重要性逐年提⾼。原因:作为动态语⾔的
Python,语⾔结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很⽜逼,⽣产效率远远⾼于c,c++,java,尤其擅⻓策略回
测
图形GUI: PyQT, WxPython,TkInter
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 是一门什么样的语言
编程语⾔主要分为编译型和解释型编程语⾔ 编译型和解释型的区别是什么?
编译器是把源程序的每⼀条语句都编译成机器语⾔,并保存成⼆进制⽂件,这样运⾏时计算机可以直接以机器语⾔来运⾏此程序,速度很 快;
⽽解释器则是只在执⾏程序时,才⼀条⼀条的解释成机器语⾔给计算机来执⾏,所以运⾏速度是不如编译后的程序运⾏的快的. 这是因为计算机不能直接认识并执⾏我们写的语句,它只能认识机器语⾔(是⼆进制的形式)
编译型vs解释型
编译型
优点:编译器⼀般会有预编译的过程对代码进⾏优化。因为编译只做⼀次,运⾏时不需要编译,所以编译型语⾔的程序执⾏效率⾼。 可以脱离语⾔环境独⽴运⾏。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运⾏环境⽣成机器码,不同的操作系统之间移植就会 有问题,需要根据运⾏的操作系统环境编译不同的可执⾏⽂件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运⾏,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以, 可以快速部署,不⽤停机维护。 缺点:每次运⾏的时候都要解释⼀遍,性能上不如编译型语⾔。
python的优缺点
先看优点
Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但⼊⻔容易,⽽且将
来深⼊下去,可以编写那些⾮常⾮常复杂的程序。
开发效率⾮常⾼,Python有⾮常强⼤的第三⽅库,基本上你想通过计算机实现任何功能,Python官⽅库⾥都有相应的模块进⾏
⽀持,直接下载调⽤后,在基础库的基础上再进⾏开发,⼤⼤降低开发周期,避免重复造轮⼦。
⾼级语⾔————当你⽤Python语⾔编写程序的时候,你⽆需考虑诸如如何管理你的程序使⽤的内存⼀类的底层细节
可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够⼯ 作在不同平台上)。如果你⼩⼼
地避免使⽤依赖于系统的特性,那么你的所有Python程序⽆需修改就⼏乎可以在市场上所有的系统平台上运⾏
可扩展性————如果你需要你的⼀段关键代码运⾏得更快或者希望某些算法不公开,你可以把你的部分程序⽤C或C++编写,
然后在你的Python程序中使⽤它们。
可嵌⼊性————你可以把Python嵌⼊你的C/C++程序,从⽽向你的程序⽤户提供脚本功能。
再看缺点:
速度慢,Python 的运⾏速度相⽐C语⾔确实慢很多,跟JAVA相⽐也要慢⼀些,因此这也是很多所谓的⼤⽜不屑于使⽤Python的
主要原因,但其实这⾥所指的运⾏速度慢在⼤多数情况下⽤户是⽆法直接感知到的,必须借助测试⼯具才能体现出来,⽐如你⽤C
运⼀个程序花了0.01s,⽤Python是0.1s,这样C语⾔直接⽐Python快了10倍,算是⾮常夸张了,但是你是⽆法直接通过⾁眼感知的,
因为⼀个正常⼈所能感知的时间最⼩单位是0.15-0.4s左右,哈哈。其实在⼤多数情况下Python已经完全可以满⾜你对程序速度的
要求,除⾮你要写对速度要求极⾼的搜索引擎等,这种情况下,当然还是建议你⽤C去实现的。
代码不能加密,因为PYTHON是解释性语⾔,它的源码都是以名⽂形式存放的,不过我不认为这算是⼀个缺点,如果你的项⽬
要求源代码必须是加密的,那你⼀开始就不应该⽤Python来去实现。
线程不能利⽤多CPU问题,这是Python被⼈诟病最多的⼀个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机
程序设计语⾔解释器⽤于同步线程的⼯具,使得任何时刻仅有⼀个线程在执⾏,Python的线程是操作系统的原⽣线程。在Linux上
为pthread,在Windows上为Win thread,完全由操作系统调度线程的执⾏。⼀个python解释器进程内有⼀条主线程,以及多条⽤
户程序的执⾏线程。即使在多核CPU平台上,由于GIL的存在,所以禁⽌多线程的并⾏执⾏。关于这个问题的折衷解决⽅法,我们
在以后线程和进程章节⾥再进⾏详细探讨。
当然,Python还有⼀些其它的⼩缺点,在这就不⼀⼀列举了,我想说的是,任何⼀⻔语⾔都不是完美的,都有擅⻓和不擅⻓做的事 情,建议各位不要拿⼀个语⾔的劣势去跟另⼀个语⾔的优势来去⽐较,语⾔只是⼀个⼯具,是实现程序设计师思想的⼯具,就像我们 之前中学学⼏何时,有的时候需要要圆规,有的时候需要⽤三⻆尺⼀样,拿相应的⼯具去做它最擅⻓的事才是正确的选择。之前很多 ⼈问我Shell和Python到底哪个好?我回答说Shell是个脚本语⾔,但Python不只是个脚本语⾔,能做的事情更多,然后⼜有钻⽜⻆尖的 ⼈说完全没必要学Python, Python能做的事情Shell都可以做,只要你⾜够⽜B,然后⼜举了⽤Shell可以写俄罗斯⽅块这样的游戏,对此 我能说表达只能是,不要跟SB理论,SB会把你拉到跟他⼀样的⾼度,然后⽤充分的经验把你打倒。
python解释器
当我们编写Python代码时,我们得到的是⼀个包含Python代码的以.py为扩展名的⽂本⽂件。要运⾏代码,就需要Python解释器去 执⾏.py⽂件。 由于整个Python语⾔从规范到解释器都是开源的,所以理论上,只要⽔平够⾼,任何⼈都可以编写Python解释器来执⾏Python代码
(当然难度很⼤)。事实上,确实存在多种Python解释器。
CPython
当我们从Python官⽅⽹站下载并安装好Python 2.7后,我们就直接获得了⼀个官⽅版本的解释器:CPython。这个解释器是⽤C语⾔ 开发的,所以叫CPython。在命令⾏下运⾏python就是启动CPython解释器。 CPython是使⽤最⼴的Python解释器。教程的所有代码也都在CPython下执⾏。
IPython
IPython是基于CPython之上的⼀个交互式解释器,也就是说,IPython只是在交互⽅式上有所增强,但是执⾏Python代码的功能和 CPython是完全⼀样的。好⽐很多国产浏览器虽然外观不同,但内核其实都是调⽤了IE。
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发展史
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
python的安装
第⼀个python程序
python程序有两种编写⽅式:
- 进⼊cmd控制台. 输⼊python进⼊编辑模式. 这时候我们可以直接编写python程序
- 也可以在.py⽂件中编写python代码. 通过python命令来执⾏python代码
注意: python2中的中⽂编码会有问题. Python2使⽤的是ASCII码编码. 处理不了中⽂. 我们需要替换成utf-8编码.
1 # -*- encoding:utf-8 -*-
变量
变量:将运算的中间结果暂存到内存,以便后续程序调⽤. 变量的命名规则:
变量由字⺟, 数字,下划线搭配组合⽽成
不可以⽤数字开头,更不能是全数字
不能是pythond的关键字, 这些符号和字⺟已经被python占⽤, 不可以更改
不要⽤中⽂
名字要有意义
不要太⻓
区分⼤⼩写
推荐⼤家使⽤驼峰体或者下划线命名
驼峰体: 除⾸字⺟外的其他每个单词⾸字⺟⼤写
下划线: 每个单词之间⽤下划线分开
a = 10
2 _ = 30
3 __不要⽤中⽂哦 = "好的"
4 1_2 = 33 # 这个是错误的
常量
在python中不存在绝对的常量. 约定俗成, 所有字⺟⼤写就是常量
PI = 3.141592653
BIRTH_OF_SYLAR = 1990
注释
有时候我们写的东⻄不⼀定都是给⽤户看的. 或者不希望解释器执⾏. 那我们可以使⽤#来注释掉代码. 被注释的内容是不会执⾏的.可 以⽅便后⾯的程序员来拜读你的代码 单⾏注释: # 被注释的内容
多⾏注释:''' 被注释的内容 ''',"""这个也是多⾏注释"""
python的基本数据类型
什么是数据类型?
我们⼈类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强⼤,但从某种⻆度上看⼜很傻,除⾮你明确 的告诉它,1是数字,“汉”是⽂字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语⾔⾥都会有⼀个叫数据类型的东东,其实就 是对常⽤的各种数据类型进⾏了明确的划分,你想让计算机进⾏数值运算,你就传数字给它,你想让他处理⽂字,就传字符串类型给 他。Python中常⽤的数据类型有多种,今天我们暂只讲3种, 数字、字符串、布尔类型(命题).
整数(int)
在python3中所有的整数都是int类型. ⽤于计算或者⼤⼩的⽐较 整数能做什么操作:
- 加减乘除.
+, -, *, /, %, //
前四个不说了. 计算余数. - ⽐较⼤⼩.
a = 10
b = 30
print(a < b) # 真
print(a > b) # 假
print(a == b) # 假
字符串(str)
在Python中,凡是⽤引号引起来的,全是字符串. 字符串可以⽤单引号,双引号,或者三引号引起来,没有什么区别,只是⼀些特殊的格式需要不⽤的引号⽐如:
msg = """
今天我想写⾸⼩诗,
歌颂我的同桌,
你看他那乌⿊的短发,
好像⼀只炸毛鸡
"""
数字类型有 +-*/ 字符
#字符串的拼接
s1 = 'a '
s2 = 'bc'
print(s1 + s2)
#相乘 str*int
name = '坚强'
print(name*8)
布尔值(bool), 真或者假, True和False, 主要作⽤就是条件判断
a = 20
b = 30
print(a < b) # 真
print(a > b) # 假
print(a == b) # 假
⽤户交互
使⽤input()函数,可以让我们和计算机互动起来 语法: 内容 = input(提示信息) 这⾥可以直接获取到⽤户输⼊的内容
a = input("请输⼊⼀个数字a:")
b = input("请输⼊⼀个数字b:")
print(a + b)
此时你会发现结果并不是你想想的那样. 原因是input获取到数据都是str类型的. 此时两个str相加就是字符串拼接. 所以, 我们现在需要把字符串类型的数据转化成int类型 int(str) 把字符串扔进去. 得到的就是数字了. 那么上⾯的程序就要改成这样
流程控制if语句
你在⽣活中是不是经常遇到各种选择,⽐如玩⾊⼦,猜⼤⼩,选⾐服等等需要选择的状况. Python程序中也会遇到这种情况,这就 ⽤到了if语句。
第⼀种语法:
if 条件: # 引号是将条件与结果分开。
结果 # 四个空格,或者⼀个tab键,这个是告诉程序满⾜这个条件的
如果条件是<真(True)>执⾏<结果>
money = int(input("兜⾥的钱:"))
if money > 100:
print("⼤腰⼦. 没⽑")
注意: 此时, 不论条件成功与否<>⼀定会被打印.
第⼆种语法:
if 条件:
结果1
else:
结果2
第三种语法:
if 条件1:
结果1
elif 条件2:
结果2
elif 条件3:
结果3
…
else:
结果n
如果<1> 为<>, 执⾏<1>. 否则, 如果<2> 为<>, 执⾏<2>…否则, 执⾏
第四种语法(嵌套):
if 条件1:
if 条件2:
结果1
else:
结果2
else:
结果3
流程控制-while循环
在⽣活中,我们遇到过循环的事情吧?⽐如循环听歌。在程序中,也是存才的,这就是流程空语句while。
模拟⼀下循环听歌:
while True:
print('我们不⼀样')
print('我们都⼀样')
print('有啥不⼀样')
语法:
while 条件:
循环体
说明: 如果<>是<>, 则执⾏<>. 然后再次判断<>. 直到条件是<> -> 停⽌循环
案例: 输出1, 2, 3, 4….100
i = 1
while i <= 100:
print(i)
i = i + 1
案例: 两种⽅案输出1, 3, 5, 7, …, 99
i = 1
while i <= 100:
print(i)
i = i + 2
i = 1
while i <= 100:
if i%2 == 1:
print(i)
i += 1
那我们怎么终⽌循环呢?
结束循环:
1, 改变条件.
2, break
流程控制-break和continue
1, break: ⽴刻跳出循环. 打断的意思
2, continue: 停⽌本次循环, 继续执⾏下⼀次循环.
while True:
s = input("输⼊你要喷的内容(Q退出):")
if s == "Q":
print("⽼娘今天⼼情好. 不跟你⼀般⻅识")
break # 直接结束循环
print("打野. 我想对你说:" + s)
while True:
s = input("输⼊你要喷的内容(Q退出):")
if s == "Q":
print("⽼娘今天⼼情好. 不跟你⼀般⻅识")
continue # 停⽌当前本次循环. 继续执⾏下⼀次循环
print("打野. 我想对你说:" + s)
break⼀般很好理解. 难受的是continue. 给你们写⼀段伪代码. ⾃⼰斟酌⼀下. continue给我们带来的好处是什么
while True:
data = 从数据库读取的数据. 每次循环读取⼀条. ⼀共有100W条
if data == 垃圾数据: 通过条件判断. 把脏数据获取到了.
# 对于垃圾数据⽽⾔. 我们肯定是不希望处理的. 所以.此时怼上⼀个continue在合适不过
continue
…
疯狂的处理数据的代码(500多⾏)
总结
python是⼀⻔解释型⾼级编程语⾔. 它的代码是运⾏在python解释器上的. 我们⽬前使⽤的是CPython.
优点: 代码简单.容易上⼿
缺点: 代码执⾏效率没有C⾼
2.
注释: # 单⾏注释, """多⾏注释
3.
变量: 在内存中存储⼀个数据, ⽅便后⾯使⽤
⽬的: 在内存中, 众多数据中, 找到你需要的那个
变量的数据类型:
int, 整数, 加减乘除, 余数, 整除
str, 字符串, ', ", ''', """都是字符串, 操作: +, *
bool, 布尔值. True, False
4.
常量: 所有字⺟⼤写(约定俗称)
5.
⽤户交互: input()
注意: input获取到数据都是字符串类型, 如果想要进⾏数学运算或者⽐较. 必须转化成int()
6.
条件分⽀
if 条件:
结果
elif 条件2:
结果2
...
else:
结果n
当条件成⽴. 执⾏相应的结果.
7.
循环分⽀
while 条件:
循环体
只要条件成⽴. 就⼀直执⾏循环体. 每次执⾏完循环体. ᯿新判断条件
8.
break: ⼲死⼀个循环.
continue: 继续执⾏下⼀次循环