Python基础知识培训.ppt
PYTHON基础知识培训,主讲人:旋风竹影,2023/7/7,1,培训内容python概述python基础语法Python数据类型条件和循环函数模块面向对象编程文件相关,2023/7/7,2,什么是PYTHON,Python是一种开源的、解析性的,面向对象的编程语言。Python使用一种优雅的语法,可读性强 Python支持类和多层继承等的面向对象编程技术。Python可运行在多种计算机平台和操作系统中,如unix,windows,MacOS,ubuntu,OS/2等等,2023/7/7,3,为什么不使用PERL?,在规模较小的时候,Perl程序是简单的。它可以胜任于小型的应用程序和脚本,“使工作完成”。当写一下大型的程序时,perl脚本就显得有点吃力了。与Perl相比,Python程序一定会更简单、更清晰、更易于编写,从而也更加易懂、易维护。,2023/7/7,4,PYTHON下载,Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到:你可以在一下链接中下载Python的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。安装,2023/7/7,5,PYTHON的安装,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。您需要下载适用于您使用平台的二进制代码,然后安装Python。Unix&Linux 平台安装 Python:在 bash shell(Linux):输入 export PATH=$PATH:/usr/local/bin/python Window 平台安装 Python;MAC 平台安装 Python;最近的Macs系统都自带有Python环境,你也可以在链接 http:/www.python.org/download/上下载最新版安装。,2023/7/7,6,培训内容python概述python基础语法Python数据类型条件和循环函数模块面向对象编程文件相关,2023/7/7,7,第一个PYTHON程序,Python2+和 Python3+版本区别,2023/7/7,8,脚本式编程,通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效。,2023/7/7,9,PYTHON 标识符,在python里,标识符有字母、数字、下划线组成。在python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。python中的标识符是区分大小写的。以下划线开头的标识符是有特殊意义的。以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import*而导入;以双下划线开头的(_foo)代表类的私有成员;以双下划线开头和结尾的(_foo_)代表python里特殊方法专用的标识,如_init_()代表类的构造函数。,2023/7/7,10,PYTHON保留字符,下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。所有Python的关键字只包含小写字母。andexecnotassertfinallyorbreakforpassclassfromprintcontinueglobalraisedefifreturndelimporttryelifinwhileelseiswithexceptlambdayield,2023/7/7,11,行和缩进,学习Python与其他语言最大的区别就是,Python的代码块不使用大括号()来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。,2023/7/7,12,因此,在Python的代码块中必须使用相同数目的行首缩进空格数。建议你在每个缩进层次使用单个制表符或两个空格或四个空格,切记不能混用,多行语句,Python语句中一般以新行作为为语句的结束符。但是我们可以使用斜杠()将一行的语句分为多行显示,如下所示:语句中包含,或()括号就不需要使用多行连接符。如下实例:,2023/7/7,13,PYTHON 引号和注释,1.Python 接收单引号(),双引号(),三引号()来表示字符串,引号的开始与结束必须的相同类型的。其中三引号可以由多行组成,编写多行文本的快捷语法,常用语文档字符串,在文件的特定地点,被当做注释。2.Python中单行注释采用#开头,2023/7/7,14,python 中多行注释使用三个单引号()或三个双引号()。,2023/7/7,15,等待用户输入下面的程序在按回车键后就会等待用户输入:,同一行显示多条语句Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:,2023/7/7,16,以上代码中,nn在结果输出前会输出两个新的空行。一旦用户按下键时,程序将退出。,2023/7/7,17,多个语句构成代码组缩进相同的一组语句构成一个代码块,我们称之代码组。像if、while、def和class这样的复合语句,首行以关键字开始,以冒号(:)结束,该行之后的一行或多行代码构成代码组。我们将首行及后面的代码组称为一个子句(clause)。如下实例:,培训内容python概述python基础语法Python数据类型条件和循环函数模块面向对象编程文件相关,2023/7/7,18,Python数据类型标准数据类型在内存中存储的数据可以有多种类型。例如,person.s年龄作为一个数值存储和他或她的地址是字母数字字符存储。Python有一些标准类型用于定义操作上,他们和为他们每个人的存储方法可能。Python有五个标准的数据类型:Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionary(字典),2023/7/7,19,Python数字数字数据类型用于存储数值。他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。Python支持四种不同的数字类型:int(有符号整型)long(长整型也可以代表八进制和十六进制)float(浮点型)complex(复数),2023/7/7,20,var1=1var2=10,2023/7/7,21,Python 支持四种不同的数值类型:整型(Int)-通常被称为是整型或整数,是正或负整数,不带小数点。长整型(long integers)-无限大小的整数,整数最后是一个大写或小写的L。浮点型(floating point real values)-浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2=2.5 x 102=250)复数(complex numbers)-复数由实数部分和虚数部分构成,可以用a+bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型。,2023/7/7,22,Python字符串字符串或串(String)是由数字、字母、下划线组成的一串字符。s=a1a2an(n=0)它是编程语言中表示文本的数据类型。python的字串列表有2种取值顺序:从左到右索引默认0开始的,最大范围是字符串长度少1从右到左索引默认-1开始的,最大范围是字符串开头如果你的实要取得一段子串的话,可以用到变量头下标:尾下标,就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾。比如:s=ilovepythons1:5的结果是love。,2023/7/7,23,字符串类型的操作符,序列类型通用的操作符 in,not in,+,等 只适用于字符串的操作符格式化操作符%,2023/7/7,24,当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界。上面的结果包含了s1的值l,而取到的最大范围不包括上边界,就是s5的值p。加号(+)是字符串连接运算符,星号(*)是重复操作。如下实例:,以上实例输出结果:,2023/7/7,25,Python列表List(列表)是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。列表用 标识。是python最通用的复合数据类型。看这段代码就明白。列表中的值得分割也可以用到变量头下标:尾下标,就可以截取相应的列表,从左到右索引默认0开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。加号(+)是列表连接运算符,星号(*)是重复操作。如下实例:,2023/7/7,26,Python元组元组是另一个数据类型,类似于List(列表)。元组用()标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。,2023/7/7,27,Python元字典字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。字典用 标识。字典由索引(key)和它对应的值value组成。,2023/7/7,28,Python数据类型转换有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。,2023/7/7,29,培训内容python概述python基础语法Python数据类型条件和循环函数模块面向对象编程文件相关,条件表达式,2023/7/7,30,Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。可以通过下图来简单了解条件语句的执行过程:,Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。Python 编程中 if 语句用于控制程序的执行,基本形式为:if 判断条件:执行语句else:执行语句,其中判断条件成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句,具体例子如下:,2023/7/7,31,循环表达式,2023/7/7,32,Python的循环语句,程序在一般情况下是按顺序执行的。编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句允许我们执行一个语句或语句组多次,下面是在大多数编程语言中的循环语句的一般形式:,Python提供了for循环和while循环(在Python中没有do.while循环):,循环控制语句,循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:,2023/7/7,33,PYTHON 循环语句实例,2023/7/7,34,2023/7/7,35,培训内容python概述python基础语法Python数据类型条件和循环函数模块面向对象编程文件相关,2023/7/7,36,Python 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。,定义一个函数你可以定义一个由自己想要功能的函数,以下是简单的规则:函数代码块以def关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串用于存放函数说明。函数内容以冒号起始,并且缩进。return 表达式结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。,2023/7/7,37,语法:,默认情况下,参数值和参数名称是按函数声明中定义的的顺序匹配起来的。,实例:以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上。,def functionname(parameters):函数_文档字符串 function_suite return expression,def printme(str):打印传入的字符串到标准显示设备上 print str return,2023/7/7,38,函数调用定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。如下实例调用了printme()函数:,#!/usr/bin/python#-*-coding:UTF-8-*-#定义函数def printme(str):打印任何传入的字符串 print str;return;#调用函数printme(我要调用用户自定义函数!);printme(再次调用同一函数);,实例输出结果:,我要调用用户自定义函数!再次调用同一函数,2023/7/7,39,按值传递参数和按引用传递参数所有参数(自变量)在Python里都是按引用传递。如果你在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。,#!/usr/bin/python#-*-coding:UTF-8-*-#可写函数说明def changeme(mylist):修改传入的列表 mylist.append(1,2,3,4);print 函数内取值:,mylist return#调用changeme函数mylist=10,20,30;changeme(mylist);print 函数外取值:,mylist,传入函数的和在末尾添加新内容的对象用的是同一个引用。故输出结果如下:,函数内取值:10,20,30,1,2,3,4函数外取值:10,20,30,1,2,3,4,2023/7/7,40,培训内容python概述python基础语法Python数据类型条件和循环函数模块面向对象编程文件相关,2023/7/7,41,Python 模块模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。模块也是Python对象,具有随机的名字属性用来绑定或引用。简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。,例子:一个叫做aname的模块里的Python代码一般都能在一个叫aname.py的文件中找到。下例是个简单的模块support.py。def print_func(par):print Hello:,par return,2023/7/7,42,import 语句想使用Python源文件,只需在另一个源文件里执行import语句,语法如下:import module1,module2,.moduleN,当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块support.py,需要把命令放在脚本的顶端:,#!/usr/bin/python#-*-coding:UTF-8-*-#导入模块import support#现在可以调用模块里包含的函数了support.print_func(Zara),实例输出结果:,Hello:Zara,2023/7/7,43,Fromimport 语句Python的from语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:from modname import name1,name2,.nameN例如,要导入模块fib的fibonacci函数,使用如下语句:from fib import fibonacci这个声明不会把整个fib模块导入到当前的命名空间中,它只会将fib里的fibonacci单个引入到执行这个声明的模块的全局符号表。,Fromimport*语句把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:from modname import*这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。,2023/7/7,44,dir()函数dir()函数一个排好序的字符串列表,内容是一个模块里定义过的名字。返回的列表容纳了在一个模块里定义的所有模块,变量和函数。如下一个简单的实例:,#!/usr/bin/python#-*-coding:UTF-8-*-#导入内置math模块import math content=dir(math)print content;,_doc_,_file_,_name_,acos,asin,atan,atan2,ceil,cos,cosh,degrees,e,exp,fabs,floor,fmod,frexp,hypot,ldexp,log,log10,modf,pi,pow,radians,sin,sinh,sqrt,tan,tanh,2023/7/7,45,Python中的包包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的Python的应用环境。考虑一个在Phone目录下的pots.py文件。这个文件有如下源代码:,同样地,我们有另外两个保存了不同函数的文件:Phone/Isdn.py 含有函数Isdn()Phone/G3.py 含有函数G3()现在,在Phone目录下创建file _init_.py:Phone/_init_.py,2023/7/7,46,培训内容python概述python基础语法Python数据类型条件和循环函数模块面向对象编程文件相关,2023/7/7,47,Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。接下来我们先来简单的了解下面向对象的一些基本特征。,面向对象技术简介,2023/7/7,48,类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。实例变量:定义在方法中的变量,只作用于当前实例的类。继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟是一个(is-a)关系(例图,Dog是一个Animal)。实例化:创建一个类的实例,类的具体对象。方法:类中定义的函数。对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。,类的创建与实例化,2023/7/7,49,使用class语句来创建一个新类,class之后为类的名称并以冒号结尾,类的帮助信息可以通过ClassName._doc_查看。class_suite 由类成员,方法,数据属性组成。,#!/usr/bin/python#-*-coding:UTF-8-*-class Employee:所有员工的基类 empCount=0 def _init_(self,name,salary):self.name=name self.salary=salary Employee.empCount+=1 def displayCount(self):print Total Employee%d%Employee.empCount def displayEmployee(self):print Name:,self.name,Salary:,self.salary,empCount变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用Employee.empCount访问。第一种方法_init_()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法,2023/7/7,50,要创建一个类的实例,你可以使用类的名称,并通过_init_方法接受参数。,创建 Employee 类的第一个对象emp1=Employee(Zara,2000)创建 Employee 类的第二个对象emp2=Employee(Manni,5000),访问属性您可以使用点(.)来访问对象的属性。使用如下类的名称访问类变量:,emp1.displayEmployee()emp2.displayEmployee()print Total Employee%d%Employee.empCount,源码演示,2023/7/7,51,可以添加,删除,修改类的属性,如下所示:,emp1.age=7#添加一个 age 属性emp1.age=8#修改 age 属性del emp1.age#删除 age 属性,也可以使用以下函数的方式来访问属性:,getattr(obj,name,default):访问对象的属性。hasattr(obj,name):检查是否存在一个属性。setattr(obj,name,value):设置一个属性。如果属性不存在,会创建一个新属性。delattr(obj,name):删除属性。,hasattr(emp1,age)#如果存在 age 属性返回 True。getattr(emp1,age)#返回 age 属性的值setattr(emp1,age,8)#添加属性 age 值为 8delattr(empl,age)#删除属性 age,2023/7/7,52,Python内置类属性_dict_:类的属性(包含一个字典,由类的数据属性组成)_doc_:类的文档字符串_name_:类名_module_:类定义所在的模块(类的全名是_main_.className,如果类位于一个导入模块mymod中,那么className._module_ 等于 mymod)_bases_:类的所有父类构成元素(包含了一个由所有父类组成的元组),2023/7/7,53,培训内容python概述python基础语法Python数据类型条件和循环函数模块面向对象编程文件相关,PYTHON 文件I/O,2023/7/7,54,读取键盘输入Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。如下:raw_input()Input(),raw_input函数raw_input(prompt)函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符):,#!/usr/bin/python#-*-coding:UTF-8-*-str=raw_input(请输入:);print 你输入的内容是:,str,输入Hello Python!,请输入:Hello Python!你输入的内容是:Hello Python,2023/7/7,55,input函数input(prompt)函数和 raw_input(prompt)函数基本类似,但是 input 可以接收一个Python表达式作为输入,并将运算结果返回。,#!/usr/bin/python#-*-coding:UTF-8-*-str=input(请输入:);print 你输入的内容是:,str,x*5 for x in range(2,10,2),你输入的内容是:10,20,30,40,2023/7/7,56,打开和关闭文件,Python 提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用 file 对象做大部分的文件操作。,open 函数你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。语法:,file object=open(file_name,access_mode,buffering),各个参数的细节如下:file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。,2023/7/7,57,不同模式打开文件的完全列表:,2023/7/7,58,File对象的属性,一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。以下是和file对象相关的所有属性的列表:,2023/7/7,59,close()方法File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。语法:,fileObject.close();,2023/7/7,60,#!/usr/bin/python#-*-coding:UTF-8-*-#打开一个文件fo=open(foo.txt,wb)print 文件名:,fo.nameprint 是否已关闭:,fo.closedprint 访问模式:,fo.modeprint 末尾是否强制加空格:,fo.softspacefo.close()print 文件名:,fo.nameprint 是否已关闭:,fo.closedprint 访问模式:,fo.modeprint 末尾是否强制加空格:,fo.softspace,Open和close的文件操作实例,2023/7/7,61,write()方法write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。write()方法不会在字符串的结尾添加换行符(n):语法:,fileObject.write(string);,read()方法read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。语法:,fileObject.read(count);,WRITE和READ文件操作实例,2023/7/7,62,#!/usr/bin/python#-*-coding:UTF-8-*-#打开一个文件fo=open(foo.txt,wb)fo.write(welcome!nVery good site!n)fo.close()fo=open(foo.txt,r+)str=fo.read(10)print 读取的字符串是:,str#关闭打开的文件fo.close(),2023/7/7,63,重命名和删除文件Python的os模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件。要使用这个模块,你必须先导入它,然后才可以调用相关的各种功能。rename()方法:rename()方法需要两个参数,当前的文件名和新文件名。语法:,os.rename(current_file_name,new_file_name),remove()方法可以用remove()方法删除文件,需要提供要删除的文件名作为参数。语法:,os.remove(file_name),注意记得导入相应模块,