Python编程入门与提高.docx
《Python编程入门与提高.docx》由会员分享,可在线阅读,更多相关《Python编程入门与提高.docx(12页珍藏版)》请在冰豆网上搜索。
Python编程入门与提高
Python入门与提高
一、Python:
Python是一种跨平台的、开源的、免费的、解释型的高级编辑语音。
它具有丰富和强大的库,能够把用其他语言制作额各种模块很轻松地联结在一起,所以Python常被称为“胶水”语言。
优点:
学习成本低、开源、适应人群广泛、应用领域广泛。
二、注释:
单行:
#注释内容,快捷方式ctr+/
多行注释:
‘’‘’‘’注释内容‘’‘’‘’或’’’注释内容’’’
三、变量
1、标识符
由数字、字母、下划线组成
不能数字开头
不能使用内置关键字
严格区分大小写
2、命名习惯
见名知义
大驼峰:
即每个单词首字母都大写
小驼峰:
第二个(含)以后的单词首字母大写
下划线
四、输出
1、格式化符号
%s:
格式化输出字符串
%d:
格式化输出整数
%f:
格式化输出浮点数
%06d,表示输出的整数显示位数,不足以0补全,超出当前位数则原样输出
%.2f,表示小数点后显示的小数位数。
2、f-字符串
f’{表达式}’
3、print(‘内容’,end=‘“”)结束符
五、输入
一般将input接收的数据存储到变量
input接收的任何数据默认都是字符串数据
六、数据转换类型
int(x,[,base])将x转换为整数
float(x)将x转换为浮点数
complex(real[,imag])创建一个复数,real为实部,imag为虚部
str(x)将x转换为字符串
repr(x)将x转换为表达式字符串
eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s)将s转换为一个元组
list(s)将s转换为一个列表
chr(x)将一个整数转换为一个Unicode字符
ord(x)将一个整数转换为它的ASCII整数值
hex(x)将一个整数转换为一个十六进制字符串
oct(x)将一个整数转换为一个八进制字符串
bin(x)将一个整数转换为一个二进制字符串
七、字符串
1、字符串查找语法
字符串序列.find(子串,开始位置下标,结束位置下标),检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则返回-1。
注意:
开始和结束位置下标可以省略,表示在整个字符串序列中查找。
字符串序列.index(子串,开始位置下标,结束位置下标),检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则报异常。
注意:
开始和结束位置下标可以省略,表示在整个字符串序列中查找。
rfind():
和find()功能相同,但查找方向为右侧开始。
rindex():
和index()功能相同,但查找方向为右侧开始。
字符串序列.find(子串,开始位置下标,结束位置下标),返回某个子串在字符串中出现的次数。
注意:
开始和结束位置下标可以省略,表示在整个字符串序列中查找。
2、字符串修改语法
字符串序列.replace(旧子串,新子串,替换次数),替换。
注意:
替换次数如果超出子串出现次数,则替换次数为该子串出现次数。
字符串序列.split(分割字符,num),按照指定字符分割字符串。
注意:
num表示的是分割字符出现的次数,即将来返回数据个数为num+1。
字符或子串.join(多字符串组成的序列),用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串。
capitailize(),将字符串第一个字符转换成大写。
注意:
capitalize()函数转换后,只字符第一个字符大写,其他的字符全部小写。
title(),将字符串每个单词首字母转换成大写。
lower(),将字符串中大写转小写。
upper(),将字符串中小写转大写。
Istrip(),删除字符串左侧空白字符。
rstrip(),删除字符串右侧空白字符。
strip(),删除字符串两侧空白字符。
字符串序列.ljust(长度,填充字符),返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串。
字符串序列.rjust(长度,填充字符),返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串。
字符串序列.center(长度,填充字符),返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串。
3、字符串判断语法
字符串序列.startswith(子串,开始位置下标,结束位置下标),检查字符串是否以指定子串开头,是则返回True,否则返回False。
如果设置开始和结束位置下标,则在指定范围内检查。
字符串序列.endswith(子串,开始位置下标,结束位置下标),检查字符串是否以指定子串开头,是则返回True,否则返回False。
如果设置开始和结束位置下标,则在指定范围内检查。
isalpha(),如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False。
isdigit(),如果字符串中只包含数字则返回True,否则返回False。
isalnum(),如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False。
isspace(),如果字符串中只包含空白,则返回True,否则返回False。
八、列表
1、列表查找函数
len(),访问列表长度,即列表中数据的个数。
index(),返回指定数据所在位置下标,如果查找的数据不存在则报错。
count(),统计指定数据在当前列表中出现的次数。
2、判断是否存在
in:
判断指定数据在某个列表序列,如果在返回True,否则返回False。
notin:
判断指定数据不在某个列表序列,如果在返回True,否则返回False。
3、增加
列表序列.append(数据),列表结尾追加数据。
如果追加的数据是一个序列,则追加整个序列到列表。
列表序列.extend(数据),列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表。
列表序列.insert(位置下标,数据),指定位置新增数据。
4、删除
del目标
列表序列.pop(下标),删除指定下标的数据(默认为最后一个),并返回改数据。
列表序列.remove(数据),移除列表中某个数据的第一个匹配项。
Clear(),清空列表
5、列表修改
reverse(),逆置
列表序列.sort(key=None,reverse=False),排序。
revese表示排序规则,revese=True降序,revese=False升序(默认)。
copy()复制。
九、元组
一个元组可以存储多个数据,元组内的数据是不能修改的。
元组使用小括号,且逗号隔开各个数据,数据可以是不同类型的数据类型。
如果定义的元组只有一个数据,那么这个数据后面也需添加逗号,否则数据类型为唯一的这个数据的数据类型。
元组内的直接数据如果修改则立即报错,但是如果元组里有列表,修改列表里面的数据则是支持的,故很重要。
十、字典查找
Key,如果当前查找的key存在,则返回对应的值,否则报错。
字典序列.get(key,默认值),如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回None。
Keys()
values()
items()
十一、集合
有数据集合S1={数据1,数据2,…}
无数据集合S1=set()
创建集合使用{}或set(),但如果要创建空集合只能使用set(),因为{}用来创建空字典。
add(),因为集合有去重功能,所以当向集合追加的数据是当前集合已有数据的话,则不进行任何操作。
update(),追加的数据是序列。
remove(),删除集合中的指定数据,如果数据不存在则报错。
discard(),删除集合中的指定数据,如果数据不存在也不会报错。
pop(),随机删除集合中的某个数据,并返回这个数据。
十二、运算符
+合并,支持字符串、列表、元组
*复制,支持字符串、列表、元组
in元素是否存在,支持字符串、列表、元组、字典
notin元素是否不存在,支持字符串、列表、元组、字典
range(start,end,step),生成从start到end的数字,步长为step,供for循环使用,range()生成的序列不包含end数字。
enumerate(可遍历对象,start=0),函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标一般用在for循环当中。
注意:
start参数用来设置遍历数据的下标的起始值,默认为0。
十三、容器类型转换
tuple(),将某个序列转换成元组。
list(),将某个序列转换成列表。
set(),将某个序列转换成集合,集合可以快速完成列表去重,集合不支持下标。
十四、推导式
列表推导式:
用一个表达式创建一个有规律的列表或控制一个有规律列表。
又叫列表生成式。
十五、函数
函数就是将一段具有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的需求。
函数必须先定义后使用。
定义函数
def函数名(参数)
“””说明文档”””
代码1
……
Global定义全局变量
1、函数的参数
位置参数:
调用函数时根据函数定义的参数位置来传递参数。
注意:
传递和定义参数的顺序及个数必须一致。
关键字参数:
函数调用,通过“键=值”形式加以指定。
可以让函数更加清晰、容易使用,同时也清楚了参数的顺序需求。
注意:
函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。
缺省参数:
缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:
所有位置参数必须出现在默认参数前,包括函数定义和调用)。
注意:
函数调用时,如果为缺省参数传递值则修改默认参数值;否则使用这个默认值。
不定长参数:
也叫可变参数。
用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。
此时,可用包裹位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便。
包裹位置传递*args;包裹关键字传递**kwargs
2、拆包和交换变量值
拆包元组数据
拆包字典数据,对字典进行拆包,取出来的是字典的key。
交换变量,a,b=b,a
3、引用
在python中,值是靠引用来传递的。
我们可以用id()来判断两个变量是否为同一个值的引用。
我们可以将id值理解为那块内存的地址标识。
4、可变和不可变类型
所谓可变类型和不可变类型是指:
数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变。
可变类型:
列表、字典、集合
不可变类型:
整形、浮点型、字符串、元组
十六、递归
递归的特点:
函数内部自己调用自己;必须有出口。
十七、lambda表达式
如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。
lambda参数列表:
表达式,
注意:
lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
Lambda表达式能接收任何数量的参数但只能返回一个表达式的值。
无参数
一个参数
默认参数
可变参数:
*args,这里的可变参数传入到lambda,返回值为元组。
可变参数:
**kwargs
Fn1=lambdaa,b:
aifa>belseb
十八、高阶函数
把函数作为参数传入,这样的函数称为高阶函数。
abs()完成对数字求绝对值计算
round()完成对数字的四舍五入计算
map(func,lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)返回。
导入模块importfunctools调用functools.redunce
reduce(func(x,y),lst),其中fuc必须有两个参数。
每次func计算的结果继续和序列的下一个元素做累积计算。
Filter(func,lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。
如果转换为列表,可以使用list()来转换。
十九、文件的操作
open(name,mode),可以打开一个已经存在的文件,或者创建一个新文件。
name是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode设置打开文件的模式:
只读、写入、追加等。
w:
写,文件不存在则新建改文件;r:
读,文件不存在则报错;a:
追加
f=open(‘test.txt’,’w’),f是open函数的文件对象。
对象文件.write(‘内容’),写入
对象文件.read(num),num表示要从文件中读取的数据的长度(单位是字节),如何没有传入num,那么就表示读取文件中所有的数据。
readlines(),可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
readline(),一次读取一行内容。
seek():
用来移动文件指针。
语法:
文件对象.seek(偏移量,起始位置)
起始位置:
0文件开头;1当前位置;2文件
os.rename(目标文件名,新文件名)文件重命名
os.remove(目标文件名)删除文件
os.mkdir(文件夹名字)创建文件夹
os.rmdir(文件夹名字)删除文件夹
os.getcwd()获取当前目录
os.chdir(目录)改变默认目录
os.listdir(目录)获取目录列表
魔法方法
__init__():
初始化
__str__():
输出对象信息
__del__():
删除对象时调用
二十、面向对象
1、面向对象三大特性;
(1)封装
将属性和方法书写到类的里面的操作即为封装
封装可以为属性和方法添加私有权限
(2)继承
子类默认继承父类的所有属性和方法
子类可以重写父类属性和方法
(3)多态
传入不通的对象,产生不通的结果
2、多态
多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)。
(1)定义:
多态是一种使用对象的方式,子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行结果。
(2)好处:
调用灵活,有了多态,更容易编写出通用的代码,做出通用的编程,以适应需求的不断变化。
(3)实现步骤:
定义父类,并提供公共方法
定义子类,并重写父类方法
传递子类对象给调用者,可以看到不同子类执行效果不同
3、类属性和实例属性
(1)、设置和访问类属性
类属性就是类对象所拥有的的属性,它被该类的所有实例对象所共有。
类属性可以使用类对象或实例对象访问
优点:
记录的某项数据始终保持一致时,则定义类属性。
实例属性要求每个对象为其单独开辟一份内存空间来记录数据,而类属性为全类所共有,仅占用一份内存,更加节省内存空间。
(2)、修改类属性
类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了一个实例属性。
4、类方法和静态方法
(1)、类方法特点
需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数
(2)、类方法使用场景
当方法中需要使用类对象(如访问私有类属性等)时,定义类方法
类方法一般和类属性配合使用
(3)、静态方法特点:
需要通过装饰器@staticmethod来进行装饰,静态方法既不需要传递类对象也不需要传递实例对象(形参没有self/cls)。
静态方法也能够通过实例对象和类对象去访问。
(4)、静态方法使用场景
当方法中既不需要使用实例对象(如实例对象,实例属性),也不需要使用类对象(如类属性、类方法,创建时实例等)时,定义静态方法。
取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗
二十一、异常
1、异常语法:
try:
可能发生错误的代码
except:
如果出现异常执行的代码
2、捕获指定异常语法:
try:
可能发生错误的代码
except异常类型:
如果捕获到该异常类型执行的代码
注意:
如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
一般try下方只放一行尝试执行的代码。
当捕获多个异常时,可以把要捕获的异常类型的名字,放到except后,并使用元组的方式书写。
3、捕获异常描述信息
try:
print(num)
except(NameError,ZeroDivisionError)asresult:
print(result)
4、捕获所有异常:
Exception是所有程序异常类的父类
try:
print(num)
exceptExceptionasresult:
print(result)
else:
print(‘’)
5、异常的finally,finally表示的是无论是否异常都有执行的代码,例如关闭文件。
6、python中,抛出自定义异常的语法为raise异常类对象
class异常类类名(Exception):
#自定义异常类
代码
def__str__(self):
return…
raise异常类名()#抛出异常
exceptException…#捕获异常
二十二、模块和包
1、导入模块三种方法
import模块名1,模块2…
from模块名import功能名1,功能名2…
from模块名import*
2、as定义别名
import模块名as别名#模块定义别名
from模块名import功能as别名
3、导入模块:
只在当前文件中调用函数,其它导入的文件内不符合该条件,则不执行函数调用。
if__name__==’__main__’
4、__all__:
如果一个模块文件中有__all__变量,当使用fromxximport*导入时,只能导入这个列表的元素。
5、包:
包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py文件,那么这个文件夹就称为包。
方法1:
import包名.模块名
方法2:
from包名import*
必须在__init__.py文件中添加__all__=[],控制允许导入的模块列表。
pattern=r’[1-9]{1,3}(\.[0-9]{1,3}{3}#模式字符串