0、Python情况
- 语法简单易懂,适合小白入门
- 可移植性高,各平台都能运行
- 使用广泛
- 面向对象编程
1、数据类型
Python定义变量时,不需要指明数据类型
- 整型:int,对应的函数为int()
- 浮点型:float,对应的函数为float()
- 布尔型:只有True和False两个值
- 字符串类型:str,对应的函数为str()
2、命名规范
使用字母,数字和下划线命名,不能以数字开头
- 常量:在定义时就给了值,全部都为大写
- 变量:全部都为小写,值可变
3、字符串相关
常用操作符
str1+str2
*:字符串倍数 str1*5
in:用来判断指定字符是否在字符串内,返回结果为True或者False 'l' in 'hello'
not in:用来判断指定字符是否不在字符串内,返回结果为True或者False 'f' not in 'hello'
max(a,b):判断大小
内建函数
都有返回值,需要使用指定变量承接返回值
大小写相关
capitalize():将字符串的首字母大写 str=str.capitalize()
title():将字符串中的全部单词的首字母大写 str=str.title()
istitle():判断字符串是否全部单词的首字母大写,返回结果为True或者False b=str.istitle()
upper():将字符串中的字母全部大写 str=str.upper()
isupper():判断字符串中字母是否全部大写,返回结果为True或者False b=str.isupper()
lower():将字符串中的字母全部小写 str=str.lower()
islower():判断字符串中字母是否全部小写,返回结果为True或者False b=str.islower()
isdigit():判断是否为数字,返回结果为True或者False b=str.isdigit('ch')
isalpha():判断是否为字母,不区分大小写,只要是字母就返回True,否则返回False,b=str.isalpha("ch")
isalnum():判断是否为数字或者字母,也不区分大小写,返回结果为True或者False,b=str.isalnum("ch1")
查找替换
find():在字符串中找到指定字符,返回第一次找到字符的下标,找不到时返回-1 str.find('指定字符串'[,start,end])
rfind():从右开始找
lfind():从左开始找
index()/rindex()/lindex():作用与find相同,只是找不到时报异常
replace():替换 str.replace(old,new[,max]) max为最大替换次数
连接
join():使用指定字符将字符串中的字母连接起来,包括单词中间的空格也会被连接进去
str = ‘-’.join('hello')
去空格
strip():去掉字符串两头的空格,同时有多个空格的话一起去掉,中间的空格不影响 str.strip()
rstrip():去掉右边的空格
lstrip():去掉左边的空格
分割
split():使用指定字符分割字符串,分割后的每一段作为列表的一个元素存入列表中,指定字符不显示;如果字符串中没有指定字符,则不进行分割,整个字符串作为列表的一个元素放入列表中
list = str.split('指定字符'[,max]) max为最大分割次数
次数
count():返回字符串中指定字符的个数 str.count('指定字符')
计数:
counter():Counter容器实现了一个自动化的计数器,当Counter中不存在某个键时,赋值操作会自动创建一个新的键,返回一个字典,记录了元素和元素个数
切片
取出字符串中的一部分 str[start:end:step] start为开始位置,可以取到,可省略,默认是0;end为结束位置,取不到,可省略,默认是len(str);step是步长,可省略,默认是1
格式化输出
占位符:使用占位符方式格式化输出时,参数需要与对应位置的占位符格式相同,否则会报错;整型和浮点型会自动强制转换 print('%d%s%f'%(2,'s',2.5))
%s字符串占位符
%d整型数字占位符
%f浮点型数字占位符,默认是6位小数,可以使用%.2f格式保留两位小数
format():使用该函数格式化输出时,需要调用该函数,函数中的参数可以是任何数据类型 print('{}{}{}'.format(2,'s',2.5))
4、循环
for循环
格式1:for...
for i in range(5):
pass
格式2:for...else... else的执行条件是只有for循环没有被break语句强制结束且循环全部执行完成后才会执行
for i in range(5):
pass
else:
pass
if判断
格式1:if...
if 条件:
pass
格式2:if...else...
if 条件:
pass
else:
pass
格式3:if...elif...else...
if 条件1:
pass
elif 条件2:
pass
else:
pass
while循环
格式1:while 条件:...
while 条件:
pass
格式2:while条件:...else:.... else执行的条件是只有当while循环没有被break强制结束且while条件不满足后才能执行
while 条件:
pass
else:
pass
结束循环
break:强制结束当前循环体
continue:结束当前一轮循环,继续下一轮的循环
5、列表
列表函数:list(),同一个列表中不限元素类型
定义列表:list1 = ['xiaoming','jack','rose']
列表通过下标进行索引:list[0]
列表长度:len(list1)
连接列表中的元素:'-'.join(list1)
修改列表元素:只能通过下标进行索引修改 list[1] = 'mary'
列表切片:list[m,n] ,返回一个列表
列表函数
添加元素
append():将元素添加到列表末尾 list1.append('tom')
extend():将一个列表中的元素添加到另一个列表的末尾 list1.extend(list2)
insert():在指定位置插入一个元素,指定位置之后的元素依次后移 list1.insert(2,'lucy')
删除元素
del:系统函数,通过下标删除一个元素 del list1[index]
remove():通过元素进行匹配,从左到右删除第一次匹配到的元素,删除成功,返回None;如果元素不存在,报异常 list1.remove('liming')
pop():弹栈,默认移除列表最后一个元素,返回被弹出的元素,也可以指定index进行删除 list1.pop() /list1.pop(index)
clear():清空数组 list1.clear()
翻转
reverse():将列表翻转,会改变表结构 list1 = list1.reverse()
list[::-1]:将列表中的字段倒叙输出,不会改变表结构
排序
sort():list.sort(reverse=false) false是升序,true是降序,默认升序,对原列表进行改动
sorted():系统函数,sorted(可迭代,reverse=False),默认是FALSE降序,True是升序,返回的是一个新的可迭代对象,不对原来的做改动
6、元组
元组函数:tuple()
元组定义:t1 = tuple(1,2)
特性:元组一旦定义,不能修改
查找元素:通过下标查找 t1[1],元组也可以通过切片来访问元素,但不能进行修改
系统函数
max():元组的最大值 max(t1)
min():元组最小值 min(t1)
sum():元组元素和 sum(t1)
元组函数
count():返回指定参数的个数 t1.count('指定参数')
index():返回指定参数的下标 t1.index('指定参数')
7、字典
字典函数:dict{}
定义字典:dict1 = dict{'name':'jack','age':'18'}
添加元素:dict1['sex'] = 'men'
修改元素:dict1['age'] = '20'
内置函数
查找
遍历字典:for i in dict1,得到的 i为字典中的key值,可以通过key查找value,如果key不存在,报异常 value = dict1['sex']
items():将字典中的每一个键值对放在一个元组中,元组作为列表的一个元素保存到列表中 dict1.items()
keys():将字典中的所有key取出来,放在一个列表中 dict1.keys()
values():将字典中的所有value值取出来,放在一个列表中 dict1.values()
in:只能判断key在不在字典中,没有办法判断value在不在列表中,返回值为True或False 'age' in dict1
get():通过key获取value,还可以设置当key不存在时的默认返回值 dict1.get(key[,default]) key存在,返回对应的value,key不存在,返回None,如果有设置default,返回default
删除
del:系统函数 del dict1['sex'],key不存在,报异常
pop():根据key删除,返回删除的键值对,如果key不存在,返回None/default dict1.pop(key[,default])
popitem():随机删除,一般默认从字典的末尾删除 dict1.popitem()
clear():清空字典 dict1.clear()
8、集合
集合函数:set()
定义集合:set1 = {1,2,3}
作用:去重,无序
内置函数
添加
add():将一个参数添加到集合中,如果参数是一个元组,整个元组作为一个元素添加到集合中 set1.add(参数)
update():这个函数中的参数必须是可迭代的,如果参数是一个列表或者元组,将列表或者元组中的元素依次取出,无序的放入集合中 set1.update(可迭代参数)
删除
remove():删除指定参数,找不到报异常 set1.remove(参数)
pop():随机删除,一般从开头删除,不接受参数 set1.pop()
clear():清空集合 set1.clear()
discard():类似remove,只是参数找不到时,不报异常 set1.discard(参数)
运算
-:差集difference set3 = set2-set1
&:交集intersection set3 = set2&set1
|:并集union set3 = set2|set1
^:对称差集symmetric_difference set3 = set2^set1 相当于并集-交集
9、函数
函数定义:def func(arge)
函数调用:func(args)
函数返回值:return 可以返回一个或多个值,如果返回多个值,系统默认将这些返回值放入一个元组当中,需要使用多个变量承接返回结果
函数参数
局部变量和全局变量
- 在函数外声明的变量时全局变量,在函数体内部声明的变量是内部变量
- 当局部变量和全局变量相同时,在函数内部调用时,优先调用局部变量(就近原则)
- 在函数体中需要调用不可变全局变量但是不修改时,直接调用;需要修改不可变全局变量时,需要在函数体中使用global声明全局变量:global name
- 在函数体中使用可变全局变量时,可以随意修改,不需要声明
参数个数固定的函数 func(a,b,c)
参数个数可变的函数 func(*args)
其中*代表参数个数不确定,调用函数时可以传入不同个数的参数,也可以不传入参数,函数中使用args的时候,args是一个元组
参数为list时,有两种情况:
- func(list):这种情况下,list整体作为元组中的一个元素放入元组中
- func(*list):这种情况下,list中的每一个元素单独作为元组中的一个元素放入元组
关键字参数 func(a,b=2,c=3)
其中b,c为关键字参数,关键字参数是在函数定义时就给定了默认值的参数
- 给含有关键字参数的函数赋值的时候,默认按照顺序进行赋值 ,例如:func(2,3)意思是a=2,b=3,c没有被赋值,使用默认参数值2
- 如果想要给指定的关键字参数赋值,需要指定key,例如:func1(2,c=5)意思是a=2,c=5,b没有被赋值,使用默认参数值1
可变关键字参数 func(*kwargs)
- func(a=0,b=1,c=2)--->{'a':'0','b':'1','c':'2'}这种方式只进行了装包的过程,将传入的关键字装包成一个字典赋值给kwargs,所以kwargs是一个字典
- dict = {'001':'python','002':'java','003':'C语言','004':'GO语言'} func(**dict) ----这种方式首先进行拆包,然后进行装包
1、**dict是将dict字典拆包成关键字参数:('001'='python','002'='java','003'='C语言','004'='GO语言')
2、将关键字参数传入函数func
3、**kwargs将关键字参数装包成一个字典:kwargs={'001':'python','002':'java','003':'C语言','004':'GO语言'}
所以在函数中使用参数的时候,要使用kwargs,不能带**
内部函数
- 可以调用外层函数的变量
- 内部函数可以修改外层函数的可变变量,如list
- 内部函数如果想要修改外层函数的不可变变量,需要声明,关键字:nonlocal;
- 内部函数如果想要修改全局的不可变变量时,需要在内部函数中声明全局变量,关键字:global
闭包
- 外部函数中定义了内部函数
- 外部函数有返回值return
- 返回的信息是内部函数的函数名(不带括号的函数名)
- 内部函数引用了外部函数的变量
格式
装饰器
特点
- 函数A作为参数出现,函数B接收函数A作为参数
- 有闭包的特点
格式
底层原理
- func()是被装饰函数
- 将被装饰函数func()作为参数传给装饰器decorate()
- 执行decorate函数
- 将返回值又赋值给func,func=wrapper
- 调用func(),相当于调用wrapper()
单层装饰器
多层装饰器
带参数的装饰器
- 带参数的装饰器是三层的
- 最外层是负责接收装饰器参数的
- 里边的内容还是原来装饰器的内容
匿名函数
作用:简化函数定义
关键字:lambda
格式:lambda a,b:a+b
匿名函数可以作为参数出现
递归函数
10、文件操作
读文件
打开读取文件的管道:stream = open(file/path,mode,buffering,encoding)
返回一个流,相当于建立一个管道,默认mode = 'rt'读取txt类型,如果读取图片,需要mode='rb'
读取文件:
container = stream.read()-->读取全部的文件内容
container = stream.readable()------判断文件是否可读,返回true/false
container = stream.readline()------只读取一行内容
container = stream.readlines()------读取全部内容,保存在列表中
写文件
stream = open(path/filename,'w')----返回值:stream(管道),需要指定mode为w/a
mode为w时:
stream.write(s)会覆盖原来文件中的内容
mode为a时:
stream.write(s)不会覆盖原来的内容,在原来的内容后边继续添加
stream.writelines(iterable)没有换行的效果,需要自己加入\n进行换行
stream.close()写完成后需要关闭流管道
with...as...
使用with open(...) as stream的方式,不需要手动加stream.close()
os模块 import os
os.path:对路径相关的操作
os.path.dirname(__file__)获取当前文件所在的绝对路径
os.path.join(path1,path2)将两个路径连接起来
os.path.isabs(path)判断路径是不是绝对路径
os.path.abspath(filename)获取文件的绝对路径
os.path.split(path)返回一个包括path中的路径和文件名的元组
os.path.splitext(path)返回一个path中的路径文件名和文件后缀的元组
os.path.getsize(path)获取文件的大小,单位字节
os其他函数
os.getcwd():获取当前文件所在的绝对路径,类似os.path.dirname(__file__)
os.listdir(path):返回指定路径下的文件和文件夹的名字,存放到一个列表
os.mkdir(filepath):创建文件夹
os.rmdir(path):删除文件夹,只能删除空文件夹
os.remove(path):删除文件夹中的文件
os.chdir(path):切换路径
11、异常处理
12、面向对象
封装,继承,多态