python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,做为ABC语言的一种继承。 html
(龟叔:2005年加入谷歌至2012年,2013年加入Dropbox直到如今,依然掌握着Python发展的核心方向,被称为仁慈的独裁者)。java
2017年7月的TIOBE排行榜,Python已经占据第四的位置, Python崇尚优美、清晰、简单,是一个优秀并普遍使用的语言。python
由上图可见,Python总体呈上升趋势,反映出Python应用愈来愈普遍而且也逐渐获得业内的承认!!!linux
Python能够应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎全部大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。c++
目前Python主要应用领域:程序员
Python在一些公司的应用: web
python发展史算法
编程语言主要从如下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言,每一个分类表明什么意思呢,咱们一块儿来看一下。shell
2.1 编译型与解释型编程
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机能够直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,因此运行速度是不如编译后的程序运行的快的.
这是由于计算机不能直接认识并执行咱们写的语句,它只能认识机器语言(是二进制的形式)
编译型
优势:编译器通常会有预编译的过程对代码进行优化。由于编译只作一次,运行时不须要编译,因此编译型语言的程序执行效率高。能够脱离语言环境独立运行。
缺点:编译以后若是须要修改就须要整个模块从新编译。编译的时候根据对应的运行环境生成机器码,不一样的操做系统之间移植就会有问题,须要根据运行的操做系统环境编译不一样的可执行文件。
解释型
优势:有良好的平台兼容性,在任何环境中均可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就能够,能够快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
2.2动态语言和静态语言
一般咱们所说的动态语言、静态语言是指动态类型语言和静态类型语言。
(1)动态类型语言:动态类型语言是指在运行期间才去作数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其余的各类脚本语言如VBScript也多少属于动态类型语言。
(2)静态类型语言:静态类型语言与动态类型语言恰好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明全部变量的数据类型,C/C++是静态类型语言的典型表明,其余的静态类型语言还有C#、JAVA等。
2.3强类型定义语言和弱类型定义语言
(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,若是不通过强制转换,那么它就永远是这个数据类型了。举个例子:若是你定义了一个整型变量a,那么程序根本不可能将a看成字符串类型处理。强类型定义语言是类型安全的语言。
(2)弱类型定义语言:数据类型能够被忽略的语言。它与强类型定义语言相反, 一个变量能够赋不一样数据类型的值。
强类型定义语言在速度上可能略逊色于弱类型定义语言,可是强类型定义语言带来的严谨性可以有效的避免许多错误。另外,“这门语言是否是动态语言”与“这门语言是否类型安全”之间是彻底没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。
经过上面这些介绍,咱们能够得出,python是一门动态解释性的强类型定义语言。
先看优势
再看缺点:
当咱们编写Python代码时,咱们获得的是一个包含Python代码的以.py
为扩展名的文本文件。要运行代码,就须要Python解释器去执行.py
文件。
因为整个Python语言从规范到解释器都是开源的,因此理论上,只要水平够高,任何人均可以编写Python解释器来执行Python代码(固然难度很大)。事实上,确实存在多种Python解释器。
CPython
当咱们从Python官方网站下载并安装好Python 3.6后,咱们就直接得到了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,因此叫CPython。在命令行下运行python
就是启动CPython解释器。
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的解释器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是经过网络调用来交互,确保各程序之间的独立性。
windows下安装Python(手动添加环境变量)以2.7版本举例:
windows:
1
2
3
4
5
6
7
|
1
、下载安装包
https:
/
/
www.python.org
/
downloads
/
2
、安装
默认安装路径:C:\python27
3
、配置环境变量
【右键计算机】
-
-
》【属性】
-
-
》【高级系统设置】
-
-
》【高级】
-
-
》【环境变量】
-
-
》【在第二个内容框中找到 变量名为Path 的一行,双击】
-
-
> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python27,切记前面有分号
|
windows下安装Python(自动添加环境变量)以3,.5版本的举例:
1,官网下载:https://www.python.org/downloads/windows/
2,选择版本。
3,自动添加环境变量。
4,更改完成。
5,点击安装便可。
linux:
1
2
|
无需安装,原装Python环境
ps:若是自带
2.6
,请更新至
2.7
|
在d盘下建立一个t1.py文件内容是:
print("Hello world!")
打开windows命令行输入cmd,肯定后 写入代码python d:t1.py
您已经运行了第一个python程序, 即:终端---->cmd-----> python 文件路径。 回车搞定~
上一步中执行 python d:t1.py 时,明确的指出 t1.py 脚本由 python 解释器来执行。
若是想要相似于执行shell脚本同样执行python脚本,例: ./t1.py
,那么就须要在 hello.py 文件的头部指定解释器,以下:
1
2
3
|
#!/usr/bin/env python
print
"hello,world"
|
如此一来,执行: ./t1.py
便可。
ps:执行前需给予t1.py 执行权限,chmod 755 t1.py
当行注释:# 被注释内容
多行注释:'''被注释内容''',或者"""被注释内容"""
变量是什么? 变量:把程序运行的中间结果临时的存在内存里,以便后续的代码调用。
4.一、声明变量
1
2
3
4
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name
=
"taibai"
|
上述代码声明了一个变量,变量名为: name,变量name的值为:"taibai"
变量的做用:昵称,其代指内存里某个地址中保存的内容
4.二、变量定义的规则:
4.三、推荐定义方式
#驼峰体 AgeOfOldboy = 56 NumberOfStudents = 80 #下划线 age_of_oldboy = 56 number_of_students = 80
你以为哪一种更清晰,哪一种就是官方推荐的,我想你确定会先第2种,第一种AgeOfOldboy咋一看觉得是AngelaBaby
4.四、变量的赋值
#!/usr/bin/env python # -*- coding: utf-8 -*- name1 = "wupeiqi" name2 = "alex"
#!/usr/bin/env python # -*- coding: utf-8 -*- name1 = "taibai" name2 = name1
4.五、定义变量很差的方式举例
常量即指不变的量,如pai 3.141592653..., 或在程序运行过程当中不会改变的量
举例,假如老男孩老师的年龄会变,那这就是个变量,但在一些状况下,他的年龄不会变了,那就是常量。在Python中没有一个专门的语法表明常量,程序员约定俗成用变量名所有大写表明常量
AGE_OF_OLDBOY = 56
#!/usr/bin/env python # -*- coding: utf-8 -*- # 将用户输入的内容赋值给 name 变量 name = input("请输入用户名:") # 打印输入的内容 print(name)
执行脚本就会发现,程序会等待你输入姓名后再往下继续走。
可让用户输入多个信息,以下
#!/usr/bin/env python # -*- coding: utf-8 -*-
name = input("What is your name?") age = input("How old are you?") hometown = input("Where is your hometown?") print("Hello ",name , "your are ", age , "years old, you came from",hometown)
什么是数据类型?
咱们人类能够很容易的分清数字与字符的区别,可是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,不然它是分不清1和‘汉’的区别的,所以,在每一个编程语言里都会有一个叫数据类型的东东,其实就是对经常使用的各类数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。Python中经常使用的数据类型有多种,今天咱们暂只讲3种, 数字、字符串、布尔类型
7.一、整数类型(int)。
int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不一样,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上因为机器内存有限,咱们使用的长整数数值不可能无限大。
注意,自从Python2.2起,若是整数发生溢出,Python会自动将整数数据转换为长整数,因此现在在长整数数据后面不加字母L也不会致使严重后果了(Python3版本已经取消了long型)
注意:在Python3里再也不有long类型了,全都是int
7.二、字符串类型(str)。
在Python中,加了引号的字符都被认为是字符串!
那么字符串能够加减乘除么?
答案是“部分能够”,字符串相加等同因而字符串的拼接(+),字符串的相乘(*)。
7.三、布尔值(True,False)。
布尔类型很简单,就两个值 ,一个True(真),一个False(假),主要用做逻辑判断。
8,流程控制之--if。
假如把写程序比作走路,那咱们到如今为止,一直走的都是直路,还没遇到过度叉口,想象现实中,你遇到了分叉口,而后你决定往哪拐必然是有所动机的。你要判断那条岔路是你真正要走的路,若是咱们想让程序也能处理这样的判断怎么办? 很简单,只须要在程序里预设一些条件判断语句,知足哪一个条件,就走哪条岔路。这个过程就叫流程控制。
if...else 语句
单分支
if 条件: 知足条件后要执行的代码
双分支
""" if 条件: 知足条件执行代码 else: if条件不知足就走这段 """ AgeOfOldboy = 48 if AgeOfOldboy > 50 : print("Too old, time to retire..") else: print("还能折腾几年!")
缩进
这里必需要插入这个缩进的知识点
你会发现,上面的if代码里,每一个条件的下一行都缩进了4个空格,这是为何呢?这就是Python的一大特点,强制缩进,目的是为了让程序知道,每段代码依赖哪一个条件,若是不经过缩进来区分,程序怎么会知道,当你的条件成立后,去执行哪些代码呢?
在其它的语言里,大多经过{}
来肯定代码块,好比C,C++,Java,Javascript都是这样,看一个JavaScript代码的例子
var age = 56 if ( age < 50){ console.log("还能折腾") console.log('能够执行多行代码') }else{ console.log('太老了') }
在有{}
来区分代码块的状况下,缩进的做用就只剩下让代码变的整洁了。
Python是门超级简洁的语言,发明者定是以为用{}
太丑了,因此索性直接不用它,那怎么能区分代码块呢?答案就是强制缩进。
Python的缩进有如下几个原则:
多分支
回到流程控制上来,if...else ...能够有多个分支条件
if 条件: 知足条件执行代码 elif 条件: 上面的条件不知足就走这个 elif 条件: 上面的条件不知足就走这个 elif 条件: 上面的条件不知足就走这个 else: 上面全部的条件不知足就走这段
写个猜年龄的游戏吧
age_of_oldboy = 48 guess = int(input(">>:")) if guess > age_of_oldboy : print("猜的太大了,往小里试试...") elif guess < age_of_oldboy : print("猜的过小了,往大里试试...") else: print("恭喜你,猜对了...")
上面的例子,根据你输入的值不一样,会最多获得3种不一样的结果
再来个匹配成绩的小程序吧,成绩有ABCDE5个等级,与分数的对应关系以下
A 90-100 B 80-89 C 60-79 D 40-59 E 0-39
要求用户输入0-100的数字后,你能正确打印他的对应成绩
score = int(input("输入分数:")) if score > 100: print("我擦,最高分才100...") elif score >= 90: print("A") elif score >= 80: print("B") elif score >= 60: print("C") elif score >= 40: print("D") else: print("太笨了...E")
这里有个问题,就是当我输入95的时候 ,它打印的结果是A,可是95 明明也大于第二个条件elif score >=80:
呀, 为何不打印B呢?这是由于代码是从上到下依次判断,只要知足一个,就不会再往下走啦,这一点必定要清楚呀!