1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,做为ABC语言的一种继承。之因此选中Python做为程序的名字,是由于他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python's Flying Circus)的爱好者。php
Python是一种编程语言,Python是一门动态解释性的强类型定义语言。 java
编程语言:python
计算机只能识别二进制码,只认识0101010....linux
机器语言:
用二进制码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言。
机器语言属于低级语言 最底层
直观性差,容易出错
汇编语言:
实质和机器语言相同,都是直接对硬件进行操做,只不过指令采用了英文缩写的标识符,更容易识别和记忆。
一句指令只能对应实际操做中一个很细微的动做,冗长,复杂,易出错
可执行文件比较小,执行速度快
高级语言:
相对于汇编语言而言,并非特指某一种语言 C、C++、java、php、python、go、C#.....
它将许多相关的机器指令合成为单条指令,而且去掉了与具体操做有关但与完成工做无关的细节。
对开发人员更友好,在开发效率上大大提升
程序不能直接被计算机识别,必须通过转换才能被执行
编译类:
程序执行前,就将程序源代码一次性编译成机器语言,而后计算机直接执行
C、C++、Delphi....
优势:
程序执行时,再也不须要源代码,不依赖语言环境,由于执行的是机器码文件
执行速度快
缺点:
每次修改源代码后,须要从新编译
跨平台性很差,不一样操做系统,调用底层的机器指令不一样,需为不一样的平台生成不一样的机器码文件
解释类:
程序执行时,由解释器将代码一行一行翻译成机器语言,边翻译边执行
Python、Java、PHP、Ruby....
优势:
天生跨平台,由于解释器已经作好了对不一样平台的交互处理
随时修改,当即见效
缺点:
运行效率低,全部代码边解释边执行,速度比编译型慢不少
代码是明文
动态类型语言和静态类型语言主要针对数据类型检查的时间问题。c++
动态语言git
是在运行时肯定数据类型的语言。变量使用以前不须要类型声明,一般变量的类型是被赋值的那个值的类型。算法
Python、Ruby、Erlang、JavaScript、swift、PHP、SQL、Perl...编程
静态语言swift
是在编译时变量的数据类型便可肯定的语言,多数静态类型语言要求在使用变量以前必须声明数据类型。windows
C、C++、C#、Java、Object-C...
注意:一般状况下解释型语言是动态类型语言,编译型语言是静态类型语言。但也不全是,swift是编译型语言可是它也是动态类型语言。C#和Java是解释型语言也是静态类型语言。
强类型语言:
一旦一个变量被指定了某个数据类型,若是不通过强制类型转换,那么它就永远是这个数据类型。你不能把一个整形变量当成一个字符串来处理。
Java、C#、Python、Object-C、Ruby...
弱类型语言:
数据类型能够被忽略,一个变量能够赋不一样数据类型的值。一旦给一个整型变量a赋一个字符串值,那么a就变成字符类型。
JavaScript、PHP、C、C++...
CPython:
python的官方版本,使用C语言实现,使用最为普遍,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),而后运行在Python虚拟机上。
IPython:
基于CPython之上的一个交互式解释器
PyPy:
目标是执行速度,采用JIT技术,对python代码进行动态编译
JPython:
python的Java实现,Jython会将Python代码动态编译成Java字节码,而后在JVM上运行。
IronPython:
运行在微软.Net平台上的python解释器,能够把python代码编译.Net的字节码
.....
Python2与Python3:
Python2默认编码方式是ASCII码
在文件首行:#-*- encoding:utf-8 -*-
Python3默认编码方式是utf-8
优势:
一、Python的定位是“优雅”、“明确”、“简单”,因此Python程序看上去老是简单易懂,初学者学Python,不但入门容易,并且未来深刻下去,能够编写那些很是很是复杂的程序。
二、开发效率很是高,Python有很是强大的第三方库,基本上你想经过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大下降开发周期,避免重复造轮子。
三、高级语言——当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
四、可移植性——因为它的开源本质,Python已经被移植在许多平台上(通过改动使它可以工做在不一样平台上)。若是你当心地避免使用依赖于系统的特性,那么你的全部Python程序无需修改就几乎能够在市场上全部的系统平台上运行
五、可扩展性——若是你须要你的一段关键代码运行得更快或者但愿某些算法不公开,你能够把你的部分程序用C或C++编写,而后在你的Python程序中使用它们。
六、可嵌入性——你能够把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
缺点:
一、速度慢,Python 的运行速度相比C语言确实慢不少,跟JAVA相比也要慢一些,但其实这里所指的运行速度慢在大多数状况下用户是没法直接感知到的,必须借助测试工具才能体现出来,好比你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是很是夸张了,可是你是没法直接经过肉眼感知的,由于一个正常人所能感知的时间最小单位是0.15-0.4s左右。其实在大多数状况下Python已经彻底能够知足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种状况下,固然仍是建议你用C去实现的。
二、代码不能加密,由于Python是解释型语言,它的源码都是以名文形式存放的,当咱们编写Python代码时,咱们获得的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就须要Python解释器去执行.py文件。整个Python语言从规范到解释器都是开源的,理论上,只要水平够高,任何人均可以编写Python解释器来执行Python代码(固然难度很大)。事实上,确实存在多种Python解释器。
若是项目要求源代码必须是加密的,那么一开始就不该该用Python来去实现。
三、没有真正意义的多线程,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任什么时候刻仅有一个线程在执行,Python的线程是操做系统的原生线程。在Linux上为pthread,在Windows上为Win thread,彻底由操做系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即便在多核CPU平台上,因为GIL的存在,因此禁止多线程的并行执行。
云计算: 云计算最火的语言, 典型应用OpenStack
WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣..., 典型WEB框架有Django
科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
系统运维: 运维人员必备语言
金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,并且重要性逐年提升。缘由:做为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤为擅长策略回测
图形GUI: PyQT, WxPython,TkInter
1、Python安装
windows:
1.下载安装包 Windows x86-64 executable installer
https://www.python.org/downloads/
2.安装路径
C:\Python35
3.配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【系统变量框中 双击Path】--》【C:\Python35 添加到 变量值 末尾,用;分割】
4.测试
将C:\Python35中python.exe复制一份,命名为python3.exe
windows--》运行--》cmd 回车,在cmd程序中输入python3,进入交互环境说明成功
Linux:
自带python,通常是python2
1 [root@localhost ~]# python 2 Python 2.7.5 (default, Apr 11 2018, 07:36:10) 3 [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2 4 Type "help", "copyright", "credits" or "license" for more information. 5 >>> exit()
安装python3:
1 [root@localhost ~]# wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz 2 -bash: wget: 未找到命令 3 [root@localhost ~]# yum install wget -y 4 [root@localhost ~]# wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz 5 [root@localhost ~]# tar xvf Python-3.5.3.tgz 6 [root@localhost ~]# cd Python-3.5.3 7 [root@localhost Python-3.5.3]# ls 8 aclocal.m4 configure Grammar Lib Makefile.pre.in Objects PCbuild Python Tools 9 config.guess configure.ac Include LICENSE Misc Parser Programs README 10 config.sub Doc install-sh Mac Modules PC pyconfig.h.in setup.py 11 [root@localhost Python-3.5.3]# mkdir /usr/local/Python3.5 12 [root@localhost Python-3.5.3]# ./configure --prefix=/usr/local/Python3.5 13 checking build system type... x86_64-pc-linux-gnu 14 checking host system type... x86_64-pc-linux-gnu 15 checking for python3.5... no 16 checking for python3... no 17 checking for python... python 18 checking for --enable-universalsdk... no 19 checking for --with-universal-archs... no 20 checking MACHDEP... linux 21 checking for --without-gcc... no 22 checking for --with-icc... no 23 checking for gcc... no 24 checking for cc... no 25 checking for cl.exe... no 26 configure: error: in `/root/Python-3.5.3': 27 configure: error: no acceptable C compiler found in $PATH 28 See `config.log' for more details 29 [root@localhost Python-3.5.3]#yum install gcc-* -y 30 [root@localhost Python-3.5.3]# ./configure --prefix=/usr/local/Python3.5 31 [root@localhost Python-3.5.3]# make 32 [root@localhost Python-3.5.3]# make install 33 [root@localhost Python-3.5.3]# cd /usr/local/Python3.5/bin/ 34 [root@localhost bin]# ls 35 2to3 idle3 pydoc3 python3 python3.5-config python3.5m-config pyvenv 36 2to3-3.5 idle3.5 pydoc3.5 python3.5 python3.5m python3-config pyvenv-3.5 37 [root@localhost bin]# ./python3.5 38 Python 3.5.3 (default, Nov 30 2018, 10:08:37) 39 [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux 40 Type "help", "copyright", "credits" or "license" for more information. 41 >>> 42 43 [root@localhost ~]# ln -s /usr/local/Python3.5/bin/python3.5 /bin/python3.5 44 [root@localhost ~]# python3.5 45 Python 3.5.3 (default, Nov 30 2018, 10:08:37) 46 [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux 47 Type "help", "copyright", "credits" or "license" for more information. 48 >>>
在 /home/dev/ 目录下建立 hello.py 文件,内容以下:
1 print "hello,world"
执行 hello.py 文件,即: python /home/dev/hello.py
python工做过程
一、python 把代码读到内存 二、词法语法分析 三、放到编译器 ---》 生成字节码 四、执行字节码 ---》生成机器码 CPU执行
3、变量、常量
# 变量:就是将一些运算的中间结果暂存到内存中,以便后续代码调用
1 print(1+2+3+4) 2 print((1+2+3+4)*5) 3 4 x=1+2+3+4 5 print(x) 6 y=x*5 7 print(y) 8 # x、y称为变量
变量定义规范:
一、只能以字母、数字、下划线组成,且不能以数字开头
二、不能是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']
三、变量具备可描述性
定义变量的low方式:
一、变量名为中文、拼音
二、变量名过长
三、变量名词不达意
变量命名习惯
1 # 驼峰体 2 AgeOfOldboy = 56 3 NumberOfStudents = 50 4 5 # 下划线 6 age_of_oldboy = 56 7 number_of_students = 50
1 a1 = 12 2 a2 = a1 3 a3 = a2 4 a2 = 100 5 print(a1,a2,a3) #12,100,12 按行执行
#常量:一直不变的量
约定俗成,不可更改,所有是大写字母
1 AGE_OF_OLDBOY = 56
4、用户交互 input
一、等待输入,输入后继续往下走
二、将你输入的内容赋值给前面的变量
三、input出来的类型所有是str
1 name = input('请输入你的名字:') 2 age = input('请输入你的年龄:') 3 4 print(name,age,type(age)) 5 print('个人名字'+name,'个人年龄'+age+'岁')
5、注释
单行注释 #
多行注释 '''代码内容''' """代码内容"""
注释原则:
不用所有加注释,只须要在本身以为重要或者很差理解的部分加注释便可
注释能够用中文或英文,但绝对不要用拼音
6、数据类型
数字类型:主要用于计算
int(整形):整数
float(浮点型):小数
str(字符串):
凡是用引号引发来的全是字符串
字符串拼接:
双方必须都是字符串,不能与数字或其余类型拼接
1 a = '可是' 2 b = '反对' 3 c = a + b # 相加便是简单拼接 4 print(c) 5 print(c*10) # 相乘就是复制本身多少次,再拼接到一块儿
bool(布尔):
True False 不能加引号 用于判断
type() 查看类型:
1 print(100) 2 print('100') 3 print(100,type(100)) 4 print('100',type('100'))
7、格式化输出
%占位符,s string 字符串,d digit 数字,f float 小数
%f 默认保存6位,%.3f 表示指定保留3位小数
%% 只是单纯的显示%
1 # 格式 2 msg ='''--------info of Alex Li--------- 3 Name : ALex Li 4 Age : 19 5 Job : Teacher 6 Hobbie: girl 7 ------------end------------''' 8 # 实现 9 name = input('请输入名字:') 10 age = int(input('请输入年龄:')) 11 job = input('请输入工做:') 12 hobbie = input('请输入爱好:') 13 14 msg ='''--------info of %s--------- 15 Name : %s 16 Age : %d 17 Job : %s 18 Hobbie: %s 19 ------------end------------''' %(name,name,age,job,hobbie) 20 print(msg)
8、运算符
运算按种类分为算术运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算等
算术运算:
如下假设变量:a=10,b=20
比较运算:
如下假设变量:a=10,b=20
赋值运算:
如下假设变量:a=10,b=20
逻辑运算:
1 print(1>1 or 3<4 or 4>5 and 2>1 and 9>8 or 7<6) 2 print(not 2>1 and 3<4 or 4>5 and 2>1 and 9>8 or 7<6) 3 print(1>2 and 3<4 or 4>5 and 2>1 or 9<8 and 4>6 or 3<2) 4 print(8 or 3 and 4 or 2 and 0 or 9 and 7) 5 print(0 or 2 and 3 and 4 or 6 and 0 or 3) 6 7 # T F F 8 4
9、流程控制 if
单分支:
if 条件:
知足条件后要执行的代码
1 print(555) 2 if 5 > 4 : 3 print(666) 4 print(777)
双分支:
if 条件:
知足条件后要执行的代码
else:
if条件不知足就走这条
1 if 4 == 3 : 2 print(666) 3 else: 4 print('777')
多分支:
if 条件:
知足条件后要执行的代码
elif:
上面的条件不知足就走这条
elif:
上面的条件不知足就走这条
else:
上面的条件都不知足就走这个
1 score = int(input('输入分数:')) 2 3 if score > 100: 4 print('我擦,最高分才100。。。。') 5 elif score >= 90: 6 print('A') 7 elif score >= 80: 8 print('B') 9 elif score >= 70: 10 print('C') 11 elif score >= 60: 12 print('D') 13 else: 14 print('呵呵,没及格。。。')
嵌套:
1 name = input('请输入名字:') 2 age = input('请输入年龄:') 3 if name == '小二': 4 if age == '18': 5 print(666) 6 else: 7 print(777) 8 else: 9 print('错了。。')
10、while循环
while 条件:
循环体
1 # 死循环 2 count = 0 3 while True: 4 print("loop",count) 5 count += 1
#停止循环:改变条件,使其不成立
break:跳出循环
continue:结束本次循环,继续下一次循环
1 使用while 循环实现输出 1-100 内的全部奇数; 2 3 count = 0 4 while count < 101: 5 if count % 2 == 1: 6 print(count) 7 count += 1
1 count = 0 2 while count <= 100: 3 print("loop",count) 4 if count == 5: 5 break 6 count += 1 7 8 print("----out of while loop----")
1 count = 0 2 while count <= 100: 3 count += 1 4 if count > 5 and count < 95: 5 continue 6 print("loop", count) 7 8 print("----out of while loop----")
while ... else
当while循环正常执行完,中间没有被break停止的话,就会执行else后面的语句
1 count = 0 2 while count <= 5: 3 count += 1 4 print("loop", count) 5 else: 6 print("循环正常执行完了") 7 print("----out of while loop----")