第一章 python基础
1.python概述
Python是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
python官网 : https://www.python.org/
2.python的发展
2.1 python能为我们做什么
在web服务器编程,数据挖掘,自然语言处理,自动化测试等方面应用越来越多。在国内目前的趋势是部分取代java和PHP在服务器端的作用。目前流行的网站创建模式LAMP(Linux,apache,Mysql,Python/PHP/Perl)即可以用python来完成后端服务。
2.2 python哲学
Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。优美、清晰、简单也是python一直强调的哲学理念。
2.3 python语言的特点
python语言的开放性赋予了其强大的生命 这与linux相同python是一门面向对象的语言,模块,变量,函数都看作是对象。有时python被认为是一门脚本语言,但是他比传统意义的脚本语言功能上要强大得多,甚至google等公司的一些大型项目都用python,所以很多人也把他看作一种高级动态编程语言。
很好的跨平台性,也可以很容易的和多种编程语言衔接(比如c c++ java),所以我们也称python为胶水语言。
python简单的特点,被用作学习的第一种编程语言很合适,性价比较高
3. python开发环境的搭建
3.1.python版本介绍
python版本目前有python2.x与python 3.x,基本语法差别不是很大,python3在库方面有一些更新。
在系统支持上python支持 windows ,Mac OS X ,linux等系统,可以说python的跨平台性很强。
3.2 python常用开发工具
python在各个平台下都有比较优秀的开发工具,例举如下:
3.3 安装python
在这里分别为同学们介绍下python在windows和linux下的安装。
待添加:!!!
3.4编程语言类型介绍
1.编译型语言 如 c/c++语言
在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。
2.解释性语言
运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。
脚本语言是一种解释性的语言,例如javascript,python等等,它不象cc++等可以编译成二进制代码,以可执行文件的形式存在。
脚本语言不需要编译,可以直接用,由解释器来负责解释。
3.半编译半解释性语言,如java,先生成字节码,python也是先生成字节码.pyc 。先编译生成字节码然后再由虚拟机负责解释。
4.交互式解释器:python shell等都有类似的交互解释器,用户可以直接在提示行后输入相应的语句并且运行出相应的结果,极大的方便了我们的学习。
4.python预备知识
4.1什么是程序
广义的讲,为了实现一个特定的目标而预先设计的一组可操作的工作步骤就可以称之为一个程序。对于计算机系统,简单的说,程序就是系统可以识别的一组有序的指令
程序存储在磁盘上,被加载到内存中,计算机系统从内存中逐条读取指令并执行
4.2计算机的存储结构
· 存储器可以简单的分为主存储器,外存储器和寄存器
1) 主存储器也称内存,是计算机的工作存储器。程序,待处理的数据和处理的结果都存储在内存中。内存通常以字节为单位对存储单元按顺序进行编址。内存读写速度比较快,但只能在加电时存储数据
2)外存储器是用来长期保存数据的大容量存储器,目前多为磁存储器或光存储器。读写速度慢于内存,可以在不加电的情况下长期保存数据
3) 寄存器是CPU内部的高速存储器,速度快,数目少。
4.3编程语言发展
第一阶段:机器语言
直接使用机器指令(0,1序列)来设计程序,可以 被计算机系统直接识别。和自然语言完全不同,难于记忆和理解,工作量大,效率低,无法移植
第二阶段:汇编语言
把机器指令符号化,即通过一组简单的的符号来表示机器指令,更接近于自然语言,更容易理解和使用。 不能被计算机系统直接识别,要转化成机器语言后才能执行。和机器语言一样,开发工作量大,无法移植
第三阶段:高级语言
和特定的计算机系统无关,更接近于人类自然语言。一条语句对应多条机器指令,工作量小,开发效率高。同样需要转换成机器代码后才能被计算机系统识别、执行。 JAVA , PYTHON, C, C++ ,C#
·
4.4进制转换
凡是按进位的方式计数的数制叫做进位计数制,简称进位制。
基数为2的进位制叫二进制 ,为8的进位制叫八进制 ,为10的进位制叫十进制 ,为16的进位制叫十六进制
4.5编码方式
计算机中数据的概念是广义的,机内除有前面提到的数值数据之外,还有文字、符号、图像、语言和逻辑信息等等,因为它们也都是以0、1形式存在,所以成为非数值数据
字符数据主要指数字、字母、通用符号、控制符号等等,在机器内都被变换成计算机能够识别的二进制编码形式。国际上被普遍采用的一种编码是美国国家信息交换标准代码,简称为ASCII
Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。其中UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
5.程序的运行
5.1通过命令提示行运行
通过命令行运行python即为交互模式,我们可以启动ipython 或者 python3 进入交互状态然后就可以写python语句了。每次启动我们认为是一个程序进程,交互状态和程序本身有一点
差别,如可以直接显示变量的值等。
退出: python2: quit()或者ctrl + D或者 exit(),如果安装了ipython插件,则不用加().
5.2通过脚本程序运行
通过脚本程序运行即我们之前提到的“程序”是我们将python程序写入到一个文件中,通过运行文件即可让程序按照我们预定的规则执行。
普通的python文件为.py格式的文件,可以通过编译的方法生成.pyc格式的字节码文件,该文件可增加文件的执行效率.
生成.pyc字节码文件的方法:
Import py_compile
py_compile.compile(“1,py”) # 1.py 为需要编译的文件名
生成.pyo格式优化代码的方法:
python -O -m py_compile 1.py
5.3 python程序的执行过程
1)python 程序的组成
· 程序由模块构成
· 模块包含语句
· 语句包含表达式
· 表达式建立并处理对象
python程序是按照语句顺次执行的。类,函数等语句块需要调用后才能执行具体内容。
2) python关键字
1) 循环判断:
if; elif; else; for; while; bieak; continue; and; or; is; not in;
2) 函数模块类:
from; import; as; def; pass; lambda; return; class;
3) 异常:
try; except; finally; raise;
4) 其他:
del; global; with; assert; yield; nonlocal;
True; False; None; exec print (python3中, print () 为打印)
6数字和表达式
6.1 python的核心数据类型
·
1)数字(包含整形Int和浮点型Float) 字符串(String) 列表(List) 字典(Dict) 元组(Tuple) 集合(Set) 文件
2)其他类型:类类型(object);None(Nonetype);布尔型(Boolean)
3)编程单元模块类型:函数(function);模块(module);类(class)
·
6.2数字类型
1. 如果是长整形后面可以加一个L (python3中去掉了long类型所有的整形就是long 浮点型就是double)
2. 在python中每个数都是一个对象,创建时存在内存中
3. python 中数字也支持科学计数法,复数等。使用科学技术法时,需要引入 math函数
6.3常量与变量
1)常量:不能被改变的量
2)变量:人为设定有的标识符,用来标记常量,可以被重复利用赋值
3) 标识符命名规则
标识符是由程序员按照命名规则自行定义的词法符号,用于定义宏名、变量名、函数名和自定义类型名等。python的命名规则如下:
由字母,数字,下划线组成;数字不能作为开头;不能使用关键字;严格区分大小写.
但是在python的标识符命名中还有一些默认规则:
1) (_x)格式的变量名, 不会被 from module import * 语句导入
2) (__x__)格式的变量名,为系统的默认变量
3) (__x)格式的变量名,为类的私有变量
4) 变量的初始化和使用
变量使用前必须赋值(初始化):
python属于弱类型变量: 对象有类型变量无类型,变量就相当于一个对象的标签
Python 中变量和常量是分开存放的,当把变量重新赋值的时候即变量存放的地址发生了改变。不用的常量仍然在内存中,有自动的垃圾处理机制,如果没有变量绑定这个常量则自动会被处理也可以通过del来处理,全局变量也随进程消亡.
7运算符及优先级
表达式是python程序的基本组成部分,下面我们先从最今本的四则运算来学习一下python中的表达式。
7.1简单的运算
+; -; *; /;
赋值: a = 1 ; a,b = 1,2 ;
7.2除法
python3 中: / 为真除法,及保留商的小数部分; // 为假除法.及整除
7.3运算符及优先级
各个运算符的优先级如下图,优先级有低到高,
逻辑运算中的短路原则:
a>b or a>c and a<d
逻辑判断由左到右依次判断,
1)当第一个 or 条件的判断为True时, 不再继续判断, 整体判断结果为True
2)当 or 判断结果为False 时 向右继续执行
3)当 and 前的语句判断为 False时,不再继续判断.,整体判断结果为 False
4)当 and 前的语句判断为 True 时, 继续判断, 直到 所有的 and 的左右两边都为True时, 整体返回 True ,
8运算
8.1运算类型
·
· 数学运算 +; -; *; /; //; %;
· 位运算 «:左移运算 »:右移运算 |:或运算 ^:异或运算 &:与运算 ~:非运算
· 逻辑运算 ==; != ; or; and; not; is; is not; in; not in
8.2特殊运算及一些技巧:
1) a,b两数交换的方法:
①: a^=b b^=a a^=b
②: a,b = b,a
③: tmp=a a=b b=tmp
2) 左移位运算:<< :换算为2进制数, 向左移动,右边用0补位
3) 右位移运算:>> : 换算为2进制数,向右移动,即去掉右面相应位数的数值.
4) 与运算:& :一假则假;
5) 或运算: | :一真则真;
6) 异或运算: ^ : 换算为2进制数,相同为0,不同为1
7) 取反 : ~ :
注: python 中支持 += 这种运算赋值写法,但是不支持++,-–运算
8.3 math模块和类型转换
python 中除了可以用基本的运算符进行运算,还提供了专门用于运算的模块如math模块。我们可以通过help方法来查看math模块中有哪些方法。
import math # 引入math函数
math.pow(3,2) #幂运算, 结果为浮点型数字
math.sqrt(9) #开方运算
强制类型转换
在python中数据类型的强制转换通过一些内建函数来实现。有时候这种强制转换时不安全的,因为这是一种舍去精度的转换。
int(1.23) #强制转换为整型
str(123) # 强制转换为字符型,