Python入门篇
Python历史
1989年,一个无聊的圣诞夜晚,荷兰人Guido写了Python,以他喜欢的喜剧名《Monty Python's flying Circus》命名
Python版本
2.X发展到了2.7
3.Xs始于2008年,3.5发布于2015年9月,3.6发布于2016年12月,3.7发布于2018年6年6月
2.x和3.x区别
语句函数化,例如print(1,2)打印出1 2,但是2.x中意思是print语句打印元组,3.x中意思是函数的2个参数
整除,例如1/2和1//2,3.x版本中/为自然除
3.x中raw_input重命名为input,不再使用
raw_input
round函数,在3.x中i.5的取整变为距离最近的偶数
字符串统一使用Unicode
异常的捕获、抛出的语法改变
编程基础
程序:一组能够让计算机识别和执行的程序
电子计算机:能够执行程序的机器
计算机发展的两大人物:
艾伦.麦席森.图灵:被称为计算机之父
冯.诺依曼:提出了一二进制为数字计算机的数制基础,计算机按照程序顺序执行,计算机应该有五大部件
冯诺依曼体系架构
计算机应该由五大部件组成:
CPU:由运算器和控制器组成
运算器:完成各种算数运算,逻辑运算,数据传输等数据加工处理
控制器:控制程序的执行
CPU中还有寄存器和多级缓存
存储器:用于记忆程序和数据,例如内存
输入设备:将数据货这程序输入到计算机中,例如鼠标键盘
输出设备:将数据货程序的处理结果展示给用户,例如显示器,打印机
计算机语言:人与计算机交互的语言
低级语言:面向机器的语言,包括机器语言、汇编语言
高级语言:接近自然语言和书数学语言的计算机语言。 高级语言首先要书写源程序,通过编译程序把源程序准换成机器指令的程序
- 高级语言和低级语言之间需要一个转换的工具:编译器、解释器
C,C++等语言的源代码需要本地编译
Java、Python、C#的源代码需要被解释器编译成中间代码(Bytecode),在虚拟机上运行
编译语言:把源代码编译后转换成目标机器的CPU指令
解释语言:解释后转换成字节码,运行在虚拟机上,解释器执行中间代码(JVM,PVM)
高级语言的发展
非结构化语言
编号或标签,GOTO,子程序可以由多个入口和出口
有分支,循环
结构化语言
任何基本结构只允许是唯一入口和唯一出口
顺序、分支、循环,废弃GOTO
面向对象语言
更加接近人类认,万事万物抽象成对象,对象间关系抽象成类和继承
封装,继承,多态
函数式语言
程序Programm
- 程序=算法+数据结构
数据是一切程序的核心
数据结构是数据在计算机中的类型和组织方式
算法是处理数据的方式,算法有优劣之分
写程序需要注意事项
- 理清数据
- 理清处理方法
- 把数据设计转换成数据结构,把处理方法转换成算法
- 用设计范式来进行程序设备
- 世间程序皆有bug但要会debug
python解释器
官方CPython:C语言开发,最广泛的Python解释器
IPython:叫哥交互式,功能增强的Cpython
PYPY:Python语言写的Python解释器,JIT技术,动态编译python代码
Jython:Python的源代码编译成Java的字节码,跑在JVM上
IronPython: 与Jython类似,运行在.Net平台上的解释器,Python代码被编译成.Net的字节码
python基础语法(部分)
转义序列
\\ \t \r \n \' \"
前缀r,把里面的所有字符当普通字符对待
续行:
在行尾使用\
如果使用各种括号,括号内是一个整体,内部不用\
标识符:
只能是字母,下划线和数字
不能以数字开头
不能是python关键字,exp:def,class不能作为标识符
python对大小写敏感
约定:
不允许使用中文
不允许使用歧义单词,exp:class_
在python中不要随便使用下划线开头的标识符
常量:
一旦赋值就不嫩改变值的标识符
python中无法定义常量 字面常量:
一个单独的量,如 12,"abc" 变量:
赋值后可以改变值的标识符
python是动态,强语言类型
静态编译语言
事先声明变量类型,类型不能再在改变
编译时检查
动态编译语言
不用事先生命类型,随时可以赋值为其它类型
编程时不知道是什么类型,很难推断
强类型语言
不同类型之间操作,必须先强制类型装换为同一类型.exp:print('a'+1)会报错,只能是print('a'+'1')
弱类型语言
不同类型之间可以操作,自动隐式转换exp:JavaScript中console.lg(1+'a')
Python的语言类型
原码,反码,补码,负数表示法
原码: 5 => 0b101,1 => 0b1,-1 => -0b1,bin(-1)
反码:正数的反码与原码相同,负数的反码符号位不变,其余按位取反
补码:正数的补码与原码相同,负数的补码符号位不变其余按位取反后 +1(负数补码的补码就是原码)
负数表示法
负数在计算机中使用补码存储,-1 的补码为1111 1111
5-1 => 5+(-1)直觉上是0b101-0b1,其实计算机中是0b101+0b111111111.~12 = -13
表达式Expression:由数字,符号,括号,变量等的组合
算数表达式
逻辑表达式
赋值表达式:python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义
内存管理
垃圾回收机制 GC
python编程中一般无需关心变量的存亡,一般也不用关心内存的管理
Python使用对象引用计数记录所有对象的引用数
当对象引用数变为0,它就可以被垃圾回收 GC
有关性能的时候,就需要考虑变量的引用问题,但是该释放内存,还是尽量不释放内存,看需求.exp:内在正在整理释放,这时无法使用这块区间的数据
False等价布尔值,相当于bool(value)
1.空集合
- 空字符串""
- 空元祖 ()
- 空列表 []
- 空字典 {}
2.None对象
3.0